test: add consensus tests (#11)

* add consensus integration tests

* add unit tests

* organize imports
This commit is contained in:
Noah Citron 2022-09-04 19:32:16 -04:00 committed by GitHub
parent 95daee7186
commit a0b0b78da5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 6380 additions and 28 deletions

6
Cargo.lock generated
View File

@ -504,6 +504,7 @@ dependencies = [
name = "consensus" name = "consensus"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"async-trait",
"blst", "blst",
"bytes", "bytes",
"common", "common",
@ -516,6 +517,7 @@ dependencies = [
"reqwest", "reqwest",
"revm", "revm",
"serde", "serde",
"serde_json",
"ssz-rs", "ssz-rs",
"tokio", "tokio",
"toml", "toml",
@ -2901,9 +2903,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.83" version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",

View File

@ -6,6 +6,7 @@ use ethers::types::{Transaction, TransactionReceipt};
use eyre::Result; use eyre::Result;
use config::Config; use config::Config;
use consensus::rpc::nimbus_rpc::NimbusRpc;
use consensus::types::{ExecutionPayload, Header}; use consensus::types::{ExecutionPayload, Header};
use consensus::ConsensusClient; use consensus::ConsensusClient;
use execution::evm::Evm; use execution::evm::Evm;
@ -13,7 +14,7 @@ use execution::types::{CallOpts, ExecutionBlock};
use execution::ExecutionClient; use execution::ExecutionClient;
pub struct Client { pub struct Client {
consensus: ConsensusClient, consensus: ConsensusClient<NimbusRpc>,
execution: ExecutionClient, execution: ExecutionClient,
config: Arc<Config>, config: Arc<Config>,
payloads: HashMap<u64, ExecutionPayload>, payloads: HashMap<u64, ExecutionPayload>,
@ -47,7 +48,7 @@ impl Client {
pub async fn sync(&mut self) -> Result<()> { pub async fn sync(&mut self) -> Result<()> {
self.consensus.sync().await?; self.consensus.sync().await?;
let head = self.consensus.get_head(); let head = self.consensus.get_header();
let payload = self let payload = self
.consensus .consensus
.get_execution_payload(&Some(head.slot)) .get_execution_payload(&Some(head.slot))
@ -64,7 +65,7 @@ impl Client {
pub async fn advance(&mut self) -> Result<()> { pub async fn advance(&mut self) -> Result<()> {
self.consensus.advance().await?; self.consensus.advance().await?;
let head = self.consensus.get_head(); let head = self.consensus.get_header();
let payload = self let payload = self
.consensus .consensus
.get_execution_payload(&Some(head.slot)) .get_execution_payload(&Some(head.slot))
@ -172,7 +173,7 @@ impl Client {
} }
pub fn get_header(&self) -> &Header { pub fn get_header(&self) -> &Header {
self.consensus.get_head() self.consensus.get_header()
} }
fn get_payload(&self, block: &Option<u64>) -> Result<ExecutionPayload> { fn get_payload(&self, block: &Option<u64>) -> Result<ExecutionPayload> {

View File

@ -1,4 +1,4 @@
mod client; mod client;
pub use client::*; pub use crate::client::*;
pub mod rpc; pub mod rpc;

View File

@ -10,6 +10,7 @@ reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
eyre = "0.6.8" eyre = "0.6.8"
serde = { version = "1.0.143", features = ["derive"] } serde = { version = "1.0.143", features = ["derive"] }
serde_json = "1.0.85"
hex = "0.4.3" hex = "0.4.3"
ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs" } ssz-rs = { git = "https://github.com/ralexstokes/ssz-rs" }
blst = "0.3.10" blst = "0.3.10"
@ -19,6 +20,7 @@ revm = "1.9.0"
bytes = "1.2.1" bytes = "1.2.1"
futures = "0.3.23" futures = "0.3.23"
toml = "0.5.9" toml = "0.5.9"
async-trait = "0.1.57"
common = { path = "../common" } common = { path = "../common" }
config = { path = "../config" } config = { path = "../config" }

View File

@ -13,8 +13,8 @@ use config::Config;
use super::rpc::Rpc; use super::rpc::Rpc;
use super::types::*; use super::types::*;
pub struct ConsensusClient { pub struct ConsensusClient<R: Rpc> {
rpc: Rpc, rpc: R,
store: Store, store: Store,
config: Arc<Config>, config: Arc<Config>,
} }
@ -29,13 +29,13 @@ struct Store {
current_max_active_participants: u64, current_max_active_participants: u64,
} }
impl ConsensusClient { impl<R: Rpc> ConsensusClient<R> {
pub async fn new( pub async fn new(
nimbus_rpc: &str, rpc: &str,
checkpoint_block_root: &Vec<u8>, checkpoint_block_root: &Vec<u8>,
config: Arc<Config>, config: Arc<Config>,
) -> Result<ConsensusClient> { ) -> Result<ConsensusClient<R>> {
let rpc = Rpc::new(nimbus_rpc); let rpc = R::new(rpc);
let mut bootstrap = rpc.get_bootstrap(checkpoint_block_root).await?; let mut bootstrap = rpc.get_bootstrap(checkpoint_block_root).await?;
@ -78,10 +78,14 @@ impl ConsensusClient {
} }
} }
pub fn get_head(&self) -> &Header { pub fn get_header(&self) -> &Header {
&self.store.optimistic_header &self.store.optimistic_header
} }
pub fn get_finalized_header(&self) -> &Header {
&self.store.finalized_header
}
pub async fn sync(&mut self) -> Result<()> { pub async fn sync(&mut self) -> Result<()> {
let current_period = calc_sync_period(self.store.finalized_header.slot); let current_period = calc_sync_period(self.store.finalized_header.slot);
let updates = self.rpc.get_updates(current_period).await?; let updates = self.rpc.get_updates(current_period).await?;
@ -521,3 +525,132 @@ fn compute_fork_data_root(
}; };
Ok(fork_data.hash_tree_root()?) Ok(fork_data.hash_tree_root()?)
} }
#[cfg(test)]
mod tests {
use std::sync::Arc;
use ssz_rs::Vector;
use config::networks;
use crate::{
consensus::calc_sync_period,
rpc::{mock_rpc::MockRpc, Rpc},
types::Header,
ConsensusClient,
};
async fn get_client() -> ConsensusClient<MockRpc> {
ConsensusClient::new(
"testdata/",
&networks::goerli().general.checkpoint,
Arc::new(networks::goerli()),
)
.await
.unwrap()
}
#[tokio::test]
async fn test_verify_update() {
let mut client = get_client().await;
let period = calc_sync_period(client.store.finalized_header.slot);
let updates = client.rpc.get_updates(period).await.unwrap();
let mut update = updates[0].clone();
client.verify_update(&mut update).unwrap();
}
#[tokio::test]
async fn test_verify_update_invalid_committee() {
let mut client = get_client().await;
let period = calc_sync_period(client.store.finalized_header.slot);
let updates = client.rpc.get_updates(period).await.unwrap();
let mut update = updates[0].clone();
update.next_sync_committee.pubkeys[0] = Vector::default();
let res = client.verify_update(&mut update);
assert!(res.is_err());
}
#[tokio::test]
async fn test_verify_upadate_invlaid_finality() {
let mut client = get_client().await;
let period = calc_sync_period(client.store.finalized_header.slot);
let updates = client.rpc.get_updates(period).await.unwrap();
let mut update = updates[0].clone();
update.finalized_header = Header::default();
let res = client.verify_update(&mut update);
assert!(res.is_err());
}
#[tokio::test]
async fn test_verify_update_invalid_sig() {
let mut client = get_client().await;
let period = calc_sync_period(client.store.finalized_header.slot);
let updates = client.rpc.get_updates(period).await.unwrap();
let mut update = updates[0].clone();
update.sync_aggregate.sync_committee_signature = Vector::default();
let res = client.verify_update(&mut update);
assert!(res.is_err());
}
#[tokio::test]
async fn test_verify_finality() {
let mut client = get_client().await;
client.sync().await.unwrap();
let update = client.rpc.get_finality_update().await.unwrap();
client.verify_finality_update(&update).unwrap();
}
#[tokio::test]
async fn test_verify_finality_invlaid_finality() {
let mut client = get_client().await;
client.sync().await.unwrap();
let mut update = client.rpc.get_finality_update().await.unwrap();
update.finalized_header = Header::default();
let res = client.verify_finality_update(&update);
assert!(res.is_err());
}
#[tokio::test]
async fn test_verify_finality_invlaid_sig() {
let mut client = get_client().await;
client.sync().await.unwrap();
let mut update = client.rpc.get_finality_update().await.unwrap();
update.sync_aggregate.sync_committee_signature = Vector::default();
let res = client.verify_finality_update(&update);
assert!(res.is_err());
}
#[tokio::test]
async fn test_verify_optimistic() {
let mut client = get_client().await;
client.sync().await.unwrap();
let update = client.rpc.get_optimistic_update().await.unwrap();
client.verify_optimistic_update(&update).unwrap();
}
#[tokio::test]
async fn test_verify_optimistic_invalid_sig() {
let mut client = get_client().await;
client.sync().await.unwrap();
let mut update = client.rpc.get_optimistic_update().await.unwrap();
update.sync_aggregate.sync_committee_signature = Vector::default();
let res = client.verify_optimistic_update(&update);
assert!(res.is_err());
}
}

View File

@ -1,6 +1,5 @@
pub mod rpc;
pub mod types; pub mod types;
mod consensus; mod consensus;
pub use consensus::*; pub use crate::consensus::*;
mod rpc;

View File

@ -0,0 +1,45 @@
use std::{fs::read_to_string, path::PathBuf};
use async_trait::async_trait;
use eyre::Result;
use super::Rpc;
use crate::types::{BeaconBlock, Bootstrap, FinalityUpdate, OptimisticUpdate, Update};
pub struct MockRpc {
testdata: PathBuf,
}
#[async_trait]
impl Rpc for MockRpc {
fn new(path: &str) -> Self {
MockRpc {
testdata: PathBuf::from(path),
}
}
async fn get_bootstrap(&self, _block_root: &Vec<u8>) -> Result<Bootstrap> {
let bootstrap = read_to_string(self.testdata.join("bootstrap.json"))?;
Ok(serde_json::from_str(&bootstrap)?)
}
async fn get_updates(&self, _period: u64) -> Result<Vec<Update>> {
let updates = read_to_string(self.testdata.join("updates.json"))?;
Ok(serde_json::from_str(&updates)?)
}
async fn get_finality_update(&self) -> Result<FinalityUpdate> {
let finality = read_to_string(self.testdata.join("finality.json"))?;
Ok(serde_json::from_str(&finality)?)
}
async fn get_optimistic_update(&self) -> Result<OptimisticUpdate> {
let optimistic = read_to_string(self.testdata.join("optimistic.json"))?;
Ok(serde_json::from_str(&optimistic)?)
}
async fn get_block(&self, _slot: u64) -> Result<BeaconBlock> {
let block = read_to_string(self.testdata.join("blocks.json"))?;
Ok(serde_json::from_str(&block)?)
}
}

17
consensus/src/rpc/mod.rs Normal file
View File

@ -0,0 +1,17 @@
pub mod mock_rpc;
pub mod nimbus_rpc;
use async_trait::async_trait;
use eyre::Result;
use crate::types::{BeaconBlock, Bootstrap, FinalityUpdate, OptimisticUpdate, Update};
#[async_trait]
pub trait Rpc {
fn new(path: &str) -> Self;
async fn get_bootstrap(&self, block_root: &Vec<u8>) -> Result<Bootstrap>;
async fn get_updates(&self, period: u64) -> Result<Vec<Update>>;
async fn get_finality_update(&self) -> Result<FinalityUpdate>;
async fn get_optimistic_update(&self) -> Result<OptimisticUpdate>;
async fn get_block(&self, slot: u64) -> Result<BeaconBlock>;
}

View File

@ -1,19 +1,22 @@
use async_trait::async_trait;
use eyre::Result; use eyre::Result;
use super::types::*; use super::Rpc;
use crate::types::*;
pub struct Rpc { pub struct NimbusRpc {
rpc: String, rpc: String,
} }
impl Rpc { #[async_trait]
pub fn new(rpc: &str) -> Self { impl Rpc for NimbusRpc {
Rpc { fn new(rpc: &str) -> Self {
NimbusRpc {
rpc: rpc.to_string(), rpc: rpc.to_string(),
} }
} }
pub async fn get_bootstrap(&self, block_root: &Vec<u8>) -> Result<Bootstrap> { async fn get_bootstrap(&self, block_root: &Vec<u8>) -> Result<Bootstrap> {
let root_hex = hex::encode(block_root); let root_hex = hex::encode(block_root);
let req = format!( let req = format!(
"{}/eth/v0/beacon/light_client/bootstrap/0x{}", "{}/eth/v0/beacon/light_client/bootstrap/0x{}",
@ -23,7 +26,7 @@ impl Rpc {
Ok(res.data.v) Ok(res.data.v)
} }
pub async fn get_updates(&self, period: u64) -> Result<Vec<Update>> { async fn get_updates(&self, period: u64) -> Result<Vec<Update>> {
let req = format!( let req = format!(
"{}/eth/v0/beacon/light_client/updates?start_period={}&count=1000", "{}/eth/v0/beacon/light_client/updates?start_period={}&count=1000",
self.rpc, period self.rpc, period
@ -32,7 +35,7 @@ impl Rpc {
Ok(res.data) Ok(res.data)
} }
pub async fn get_finality_update(&self) -> Result<FinalityUpdate> { async fn get_finality_update(&self) -> Result<FinalityUpdate> {
let req = format!("{}/eth/v0/beacon/light_client/finality_update", self.rpc); let req = format!("{}/eth/v0/beacon/light_client/finality_update", self.rpc);
let res = reqwest::get(req) let res = reqwest::get(req)
.await? .await?
@ -41,7 +44,7 @@ impl Rpc {
Ok(res.data) Ok(res.data)
} }
pub async fn get_optimistic_update(&self) -> Result<OptimisticUpdate> { async fn get_optimistic_update(&self) -> Result<OptimisticUpdate> {
let req = format!("{}/eth/v0/beacon/light_client/optimistic_update", self.rpc); let req = format!("{}/eth/v0/beacon/light_client/optimistic_update", self.rpc);
let res = reqwest::get(req) let res = reqwest::get(req)
.await? .await?
@ -50,7 +53,7 @@ impl Rpc {
Ok(res.data) Ok(res.data)
} }
pub async fn get_block(&self, slot: u64) -> Result<BeaconBlock> { async fn get_block(&self, slot: u64) -> Result<BeaconBlock> {
let req = format!("{}/eth/v2/beacon/blocks/{}", self.rpc, slot); let req = format!("{}/eth/v2/beacon/blocks/{}", self.rpc, slot);
let res = reqwest::get(req) let res = reqwest::get(req)
.await? .await?

2219
consensus/testdata/blocks.json vendored Normal file

File diff suppressed because it is too large Load Diff

533
consensus/testdata/bootstrap.json vendored Normal file
View File

@ -0,0 +1,533 @@
{
"header": {
"slot": "3781056",
"proposer_index": "15071",
"parent_root": "0xc415126141d58b3ce480443728bf35e4f4598d32f8ddfe8b96be5f6e4080a227",
"state_root": "0xf2cf7498f16ff94244a565418cfb764d40b19c8e70417137fe6174e1a016a6c3",
"body_root": "0x0464451493b2f34c7f7dee22abba06bc53c2f5cc88691da5fd4577b78ffc599f"
},
"current_sync_committee": {
"pubkeys": [
"0x98ea4875ccf5412c71d937625173eb1e9753318a5081cb7637f818c51860c5b0b8eb511362175f458354bb56e0b2786d",
"0xa9fd2b1a95bf9c25b1671c00ff5c067f1c8dfd41717ab62bda2538ce068ad41c791efbafae4d3bb48b0953befefda5ca",
"0xb9c71bc4dc9d013f2fd75d1cf29483f4f3f0e9df848dd52aacc628efc143bfd0b5f9bd11cfc287748ecd80fd9c4ad3ed",
"0x8dcc25f5502bb867217b6984eb6cced34024a8d3f2b36f7a00c5a80bcaad43f7b51999aa410855f5c7c13763afe2658a",
"0xa99e4dbdb2a67e15474a35880140a41700b433b19627ef08ff1e7b96dc20ec080f2d6e691d2fe026962dda635730b381",
"0x95ded59a9ac3190024232fde306e7886603f5aa42f7e3d8ac8dccf398a6ec044293e88c52fa8620e65983d73961cdc7a",
"0x92f62998242dcde090f9f969b55a99884b3998cb5547a0290f95b57c1363e2a95995bba2d920ddaaabee1ad914335110",
"0x8e8a6a573cf772eb2e1f7fe49559e0bf8e87f422fec97d64301cc608864677c4727c1cad500a6ee30929c4fa477708e6",
"0xa8e2b047e83a4eaaa14846e8bfa88bb06caa9bad5b4499f7b7a8372ae3a7d9d825d2c8b3609ec43063a9df17a42397e0",
"0x933576d8237458a6236e007aacbd1e7c5da0a22e2be4bf73237ff09942550a24d7bde732e6518d8a67ebbabff539ce58",
"0x90aac69a0ddd7e3dcaca656489b013865b31b435eed71ed614205488a4f553adbaa969a90c8f4a9bb04711df656f4bbe",
"0x9017f467e64b7099ccb29d83162a4094aa62e0bfde39cb74f020561162edf90e77421317ddd5fa9e525e996aa0e0100f",
"0xb0fc3d1a6834809f9c3f8f36b44c3944cdea430f27e92a83c3cf0b41fbf25643493bd7327c8dbace32fb1e1c0553be05",
"0x8941c0c15a0009b88aac97803ff30783270c8c5f557bb9c6a496c18c1e01ab407a50217541b48ac9a8b256d8bc548e0a",
"0x93d105e99e8b4d63b496fcaddf89620eafe0dd94607ac334c22b5d19220d8c44541a645a1ba8d2d100b677aabf831659",
"0xa8063fe554ccc08abf399baafb6078f22a3a505ab8abc7cda1fe5e6e7058d0d78c64eaaba5bf75bff4e451c3c931ccc4",
"0x93b7052d0bc5dbb270fc22ab0e7ec61c9953708b0c7139078c79ad6c1223c7adc1cfd959b2b26383332dd4d31f97a1c0",
"0xb585f5505c8ad796c7c101bb9ecb1da8d13fced5e388396b6f703d9f2cb40ee37e465f29a3074933ca51194afea1beee",
"0x97aaeabb752def7d917faaad14460cf2ab769bb7bec5c2c209a7ad11d44f7b09870a1ad9455b2380e576d0d2fd788c1a",
"0x959ba4955fb51619f9ee873906dd5f3f229241ad9bee45a557ae004f3b0bd769e4bb5a0a01c4525205ec8ff3bde1f269",
"0xb55c443e40996cb76434d80f8db758ca86995e2200df0a144ab8b8f081a0621700b2d21c782ef757733c4a62c2d6b389",
"0x998ec8020727bd9b6d705fd34ed914e4a9c0328471b80288f40336feac5c4cfbe7ffdc5693473193d8c8ee2105cb2694",
"0xa6b25111228b7cbdca1a6adcfec5f4c8a21ef75e3752ec0988e626b0f516248f11527bb0cda72f4e77a4224a027f877c",
"0x80927667d0fda15f00024814a64e354419933b752214b5b8bfae91102ff0da37bef36f7c2ff71f0419db8782c4e122d6",
"0xaf81cd0efa19dc94cf5d19a6fcec1dfacf80674589bbed46715b2cabb86e622c7ba83aecfea5a14aa3921cffdf3c5f8e",
"0xb66b77633f68ff2e4d7517cd6ff192aafdec07cdb3012932955a53ddeceb8c3d656ba95ec95d4431974de29a40d9d6bb",
"0x97f9f3641cb13878aa56aae6625a3514e0eb4e2d61a2452df1ccc898eb1cdaca8001a8b3f764f0375d6523b1ec475e85",
"0xa2f13e9d7406f95f608d8db69e07b1c56bf638ba9fef07a9f6dd02198288bd28eac89a90670a268eac808efe7d10e7eb",
"0xb1ca95a169ed8c006de4cb2abe0d3c80a53fb6bc742c78c02009efd05c18abc6831ec507791725f82f86dd887b69f35b",
"0xa6f12a50deb4f2b8b89185bf46ada3e1a43f5b0e9f09f030a5edc98153db58d2af355ad7d6a692653e1a9c8a845e885c",
"0xa9d4be552af6c33a9ef076a79848ddd15a51d351a05b8b73b45615d7a6a1408a64d717e00f3d1e4f6ce33fed37c7ea9c",
"0xb8a2320fb194a6431584fc75f77ccad7c6eb5e82a409059b35fc7e7f913c227298d84df5bbf827fb29a86dc1eb28708b",
"0xa413bb7e71067c67498d556e7d870e192c821bed7cd6b28d995c4beab862d36aee45ead8cd936ffc5b52e6f145004a63",
"0x896b2ac0589de3435e9b2b9e0568e98178dc64b8554bc0f524c9e3da919dc5c4371949bf5571025bcefc19d30d438ed4",
"0x98d61ce0b15816fd892ec7b05f910c621745095eab7e3ae9bc6cdfd530604f3c69f06181a1673c34d876294b1d8bc749",
"0x82bccbc1bd1a1fb40d1d0a2806cfabd0de6b958f38357ebb2cd8d19b4f0158aef6ed8e18838f57f5e2395d1506ca4c00",
"0xb08615a4fcf8a71e6ade30024d091011a01b221ee092a2b9f2430cf82d08d0932fddf1ece6fbf114cbcc381dd17dbf9c",
"0x84581f807541ed21baa55ec34e33c4b01a5ba4945bca3437c1d3ba2ae9c4b43b31170c8f55d17bc4dd780246a3b58112",
"0xa7ca31a1f913c07793299bfb551b30c2b34bb85061a8549225131843595e5ea6ff5df900caad72b6fdea61af1f374ace",
"0xb7117df8c6f0fe9c46688f532b69f5f3dd3fc1887739cef11c7901fd94d2acc3bf70e3301567e8920ad0f9195c6a853e",
"0x8453d9a0bfc9246ff401804890f93480f5e240b1658d12c68d26ad7d7060c4ca72b3dc29f699fe30be12624a35f0070c",
"0x90c8ecffcf6a32e538d0a8c4241db7418e44043f51e8081b5d420b1d00a8c4a851c40ac99f85b9af46cdf1dd87f4bf54",
"0xae921ba90bc4ad8c0ac6759a787d156704ac8d72cb9b51de605e4ddc2b469d02073d6156dcb934425e1cd34eb801575a",
"0x93f0d3234714b318c4c3503a869392391a3c68a17333a71694922fb70e0722e30a880fec3c8cab9fd2f2366450720071",
"0xb2020762b0f65a2ea9ff87d80aef37a51154cfa71baaf072c2b48ae90d8d0acdd26f78318c231b3b9f1300bc826ce5cd",
"0xab776997232908a59dbb0fc2c4e791d177c94a5f3d5f74851d852d99edbdd5f2576e413d11578918aefeaeed51617554",
"0xa70facbf6d923a2ce25cec43457f62dc5aed7ea42c224d209bc403cca74576e28e5df9bbd2167533c844ea71e0cfdbc8",
"0xb058e6c00826310e9959c23ba33b083b9968c5cbd7ff519aa766b592ae5d23e4ba8bea8d9b60da8b8b7ef01edce23f7d",
"0xa6076b1e20605c86018f8453b99f3fc05ba5cc4dcfc17b8ed222e4f7e0fa8c371b556f8abd92fb1213f69a3935392bb7",
"0x8d3540b64b4345879981f7c0ad1af01bba467424fc663491008316503096bcd372c48d41d366fa5b795792443e269538",
"0xb3b557af5357879ac70332c0f6e09ec21d6c99f36dbdf15e160d4e99e04970553145cca51528d65141a76fab527619db",
"0xa71074cf0ae06844e9f9fef332dc9a59f39518b2084900d3e96f94a37e4b7d0cb48d7519e9b3f2e7a2caa8c22bae6f6f",
"0x82ec88a848769e6cf4818e1ecf32eb5ed0659b1743be8ec91dd67f4c3347f5febfb51d347ae050d9bc151a97daa4691d",
"0x95388c4854f677a3d8e9457345f5b92f6272b0323520960466538ff32f594a4cf5d1aeb4366e7c340a55bf6bcd9a7060",
"0xa7993b69c73d52eb4237df531095d8f1c0f174c5186f248e83446e275cf7a92caa21e355c8051a75c095a7debbe6222c",
"0x94dbde9624661ded12f234361cc43b3c2ef37a23f78bd794565b857c7f83ec788be25a3f03deb468dddc31082dc65152",
"0xb414c5c43feee63020c6da7975007e98f2879c05a2e47ddcb480206f7973f5f2714f6fe08191b8d04def9de265ea8661",
"0x9542ee685701678d5f163b8618c2ff679c903a3309efbed0ed148d967d6ba53c1342ba4ca2c1e0518c35ef49f06c4c23",
"0xb4006dc3058026c0ee95666e3fa5e250bbcf24c91bb667ecf4a70ecae29ef377ed9bcaeb0f46877767b42171d9ea1f10",
"0x8dc6893ea559d72526efa057455db52e048e38e8c0312ee8b5cfb53c8ca0827a338bd03492cf484a1569d8c7b4db65e3",
"0xa3c36957bcac907445369f3a1ef967a7ddf4ee6f0be5e0771a2a463de5cacea3aca7fd18a6e951d0fa620852a8012f2c",
"0xb1d1d5bcbf62eb1c22cda7398e905298b0f7f3e381b34f5b7af87bde7ae71482ad00e7b64167517315973dc84a608a39",
"0x90b6594481487271e4f8611419ad7f44275bfe1cf242d2f52169374b9baf8614a325fba17e40bfe54046b7b8934ea867",
"0xa3a9f2b12a813df7e20364038a89424f13ab21b7bb202606e24e155cb2f04760835bc07a9a823f4b8102ed36003100ac",
"0x96f45145009bb48e5cd1dc695ad2256e8cfbc69b48b616923054dff080665d2d1e79e9079a9b9a1f46b8d7d73c9d06dc",
"0x8d4a44ed7b19594c8af3589193f1c0c61adc726e0bd99e8ac26fbf304ee8e668f354c165d39e189fa5674c75204266a8",
"0x9081f381c16fc00b4e52e5fc00c0b2fea59db3a5a94d6e227520df45961813badb1921be36cf47bddbd8be78376da1bb",
"0xa350cebc941c7bc2791076b29e91cdc023c6f95d284aadb8d93df7686064b7275f080da52ea12b52173c779a59d6c860",
"0x8511314998c6d1c07b83d3836420bc6dc497f669bb6635bf8b41f3e6d018da5c5c0d602d7914806e0e29e7f53d02b5db",
"0x9308661a1df7fd02f9e30ef891e6d8b7dbbe015f6db83f24c6b46ec3d48a39bfa1fb4286f15f4a6cfdf8510e832249bd",
"0xaf83a0b0481719fff6c7d1f5c517a88b41ed5e902e5cf41ad10c3f8cb77e6294b25c5507df63fbd0fa996f2f670bc1d9",
"0xb95592327eda518d2739c18bacba8591e0b12660623c68c703ec4c07512d73ff24f1e51af77e780f6de59f185ca20006",
"0xa2ec43c253b50452b6379bb9400e274d66c6cfdc4f1d8cea86e819ca33040623d9854d996b78963a60c08a370f2d1512",
"0xab70e9683837dbd6ed3dfa6f6a09a03cc23deddee14d0ccaabc178f0515c94f8302ae71fda4cc38981a6adb5e40d277c",
"0xaeda00c06986d4ab1e658a078871de126054b1a23ab82f3dd68242a61b4f335146714ba673269ec4820fc5a61d820471",
"0xaaef055d79bdd5bf83ecc1730bae33b684ccc6ebdffc8f4adb27ad4ce2def5e57675d5464693dbce54489b6e7dd7c594",
"0xa8f3928d2bde880c609d6436a526a066bcafb9b3d1b7d7aa629c7770e55c94f6678399313dded875186047241f780605",
"0x8cb98fa814591546d4642b47cb5e0681fd179acffa50fb9fe7e6bb20277a0ab08b603e24ebaefcdd0d33fd6e9875e043",
"0x99f5538d9cd4a931eca52161b7809623aa6ac7638c46a17e8ba30aac543fe21c3f6cd1af07029cc0040408deca5a1f26",
"0x98ba11931981d3a6ba63539679f7768ee9048ab86c042d8a1833a00bc158ac24176f2091a586ea28443fd9a2437c0fe4",
"0x8178141a2f9db3894802adcff77c43e83762764c9cb6faf671d6260b0f31c4f974fb533799da6990ed64f50843f50ec2",
"0xacf4509c79b9c8747238ae930f29b4c18a48a7ec066bcee8d29ac22b9204032f9155bb6a7837e41ef39f7c7308c066f0",
"0x91760498e281f0ede635433b1a5c179f533ed5e87057bfb7cc58208f5e25c4516596fcb0db74bd0f53b5c960e345b04a",
"0x8a4a623509b4d0abbfab2c65b1b87eaed0958b50bc098f75ac29c68922c6237a5136c636e7c1371f47cd5e0ca01342ad",
"0x8dafd5a3ede0482e1c944f16a3b88d1be770cb197fb6426c4939b5b97b1ffabcb09e307eee2fce1a07bc60c879b67132",
"0x849d84e0ce68935ba623667f6cbeabc764a4d150ec699cc0bf32e7903c91d400b1e94fa0cd001a54db5f296da5593aea",
"0xacac56e5424f88e59f79d05f0d16368f1633a48caf3b066ea72b7c987005ad217322018aae52f1150b375bd837b987ac",
"0x8494eb9c2006ee720f7d5eb7418632d9f770b45d9e53d38e280b2dfac527ad6e94b8387b4a3908e2299bf7aa2c308ef1",
"0xae00d0156f69ef15301d0135fda2eb363b12b867668b9899369cfaa9c5246d5ae87e9b7a946ca731f7e4b9959416b4f7",
"0x8f033bb2b50e8abb384da43634f97a7f0e0470e58fb3d646289fb5cb5066e9595608adb36142eb3386a21f643dba7ecc",
"0xa17994427670fead9bfae1fb25593e5354af619a183630ce7b8fc0c661d74185bf7bbcd57d56ba47478d590995390120",
"0x81e0a89c63d391a75541546ca96aed55b86a7e09b9143961c8759231fa91c1b65d0f8941baec997b0d04b1eb41ca607e",
"0x99908ceaba7a9743cdd810a6b71572294e015c97cd01b5396fc008fd7a27a9bed5f489e6398b8f28b5addff4884c55c9",
"0xa4ba34c14657875afb778778bdd0604ef7893f4a1a6f3bf1cf27b5d3467f6b47a4cf484e342fe90f3407793b16de30bb",
"0x8878b1c78038d0984692a37013672b4d1a3d720d615f77523fd50e45294a497cae346834f9432d3949a4c44a630427b6",
"0x994a81edfb09f9faa0febc5585ac38c0a80319a30187d232271778bff4af321f0270ccda03f15ece5eb71b602960b3e9",
"0xb29e4ffc4de2f251ef24119b0247164574647800d54037e237a3d320cb1e8f1b467279eccbdb9fe97e974724ee0a439f",
"0xb2c6b0360502330154bded859abee870600cdc6d06ad3c834143c3f9c547ac0958c9b89ef7df853868b3f97eb7ae29c3",
"0xb115e04cd4de0805f02aed6fcb1a52aeb0a8a66eabadb1d3039d11c5bd6520ee20093c86e3938cdbf80486a180df16b1",
"0xb3fcb24f263fdffa1a2fb04dabc604deed05fc78680884770794463b5f47012aae73e6dab9753561e5ee4e178b93405f",
"0x8e28bdbe4527a568cb59838bef27becd4fd361b49667bf4c4eda693a3d8ba91f6f19af7851fd62f5e2927757302fbd10",
"0xae56bbc9ae3fe7a82e6c7c568396da67ce352b2f16cc51e42d267158de3d2501579a3cab2f392f3819b870431912da57",
"0xa00aea9cc654a499638d67e419ec4aaac50c833d82f1587dfdd876b55ff509657cc85f15674fc69352da5506ba4268bc",
"0x955a92b88357fa868a81a307c8aece90d09837150935ab7f7c65e4eb254e3ab6b484177225a488cfa72da2d1d64e3a02",
"0x85d4d756ecb35d669a16f113695188d23d563828757c81c64883397d22b23db9799917f66dae442f33ccebf01e4ac25f",
"0xa383c486f71cb5ea2cdf11795126c9a59cdd176ac59fa49746fcf5bdce657eca0686c4cda178c2bf2fcbfbb079f7e831",
"0x98f5df1852db945a322d46e0b77e11079691ef8a1565113d967b911d69b3e189eefd6e4c6aa43c49c12012df98c7a5fa",
"0x9017fa9b2272f056873fd569520b7b5d112708950fd33d7fd1685ff3cb07cb687beebbf824faa587ff79dc5a28d80783",
"0x92ac6bf4db435f9383020522e10fe1fde56554a8391f8d40e4d20421d02eeb4170c281e3581c7546d0360b5d79550210",
"0xa541d5d8da721b4c54b45aac44eb91e6fbe8f368cf0b84658a85587e726df2ca5b56ee5dcf39dd1931ae51fc7f3e8e3b",
"0x923cd592da75183718b89aa807eb94d622d830bca880febb107ca383b8b9d964c8b8abad55f55d295cbd2bd04d7cdac8",
"0x961fd1d655973fd114d27d248e86f81f9978668b335bfb97cab1c4262395a81a928d4888637a3537bdad7d4198d977b2",
"0x8a7a8a6d4ac534f3f4c64314bdb69afa7b995321d7270e6a262fc4122c679fc7b0bd9843423460ca33d8f6e9a901935c",
"0xab3b9567e0338a6a02a5d9fc86012b4b63ee0c5d86984ce84f04b525606ee471b1a5df7ed6f49511bb086dc593965a0b",
"0x8a40236f3d3cb27f2fde9983d8c4fb63fe92c1b68f58b55298e5f25605d0ae9f2177bfc9911f4891dde94d978a27f66d",
"0xa77299eb07cdca04452acc44f5ce4cb6645de397eefdaa15d8e92824f391754e774c7b6149f57e59f3ca1fafc73a9725",
"0xae82b31a6060f95fe4507e5d816a459471646415b74677a6932ba2a1fe3a446fbeacd7492dcdd0c96af63c335d0ad5c2",
"0x83eabc6f68e3430c2b0b87334c12147924dee25046602747a2f52732278c800eab8690c38150ebf5318afad1857429de",
"0xb1906d56ab2634e6844a3721749bbbdd512ff5ae44d7d06dd37a2a09102ee89d38583c319eedf5dedb1eeb4fc48f698e",
"0xa4a52883f1e5ae484da2e0821a12adcb3f10e56ad7319cf854651785f03a2c1edf0c623d18bb4e5bef9de7cd611902d3",
"0xa8a84acf4b1778c32f65865600e99782b64f01e3f517091913aa2c64d4c6d36c1032ac6246c4e27133ff02346551e977",
"0xa195ead64be56c487c9fc7de655ef715d9ec5f8bf5730c41e7df4d7431ff02cba51829ddd6a919c987ab7399a60f4e2e",
"0xb254f5e03608e9e343854c8f22c31a0009ca272f42e48497c85a2debc3a946bdf4bbf28afd9b80ab5af8574743f20987",
"0x8dfc823a49ff646ca8f7f0ee4c33af0443adcac3089702802ab152e2e1d291af775771968c2a0e1c87367bd21e17682f",
"0xb56e496056cb2f491de02c3f6546ee1f61b3b2daf50e721fcb8c684ee4552573d5e8d1657657b3faa2647e5d234e8a1c",
"0xa298e52b48f23f7b0d2ca53938592df43a9a358bca94513775275bf1b0d7c6d3feb5a13a34a08246b170591cc3262adf",
"0x955423710f9d8790cf0add742910d9ec3fc74590ef28fd5d2e0d4302016aee9d8859b5437da791ba09900bcf397ac76e",
"0xa0daba8c6a4fb0f0789770ee402031c4b5778e305e34e9f22fdb8ad3c2f5b451f4a2175713ea1257776d6010faeac8e9",
"0x8c8301c29ed4473d13061c35bc92cbf64b7978805c9cf16bd8dbec9bff96f6fa99afa17f1480d95ccfc0875fcd946e72",
"0xa1b6a59fb6c87bab4f71478faad4a2c3740ac40af7bf9381f01b1f39137dce785bd182f74c1375093c7898a06f8972d1",
"0xb9e20907c057ad43f634f6acf7dcee31a360dc390a746befc05339e8570556af12440038388a293ae2fbae0d2fcfcec7",
"0xaff4c00fad56c9aa1e64166fd2f88f043d27f7c6f464addec66f9794579434bfbb7f5163a2ca67a6ffea579f8c82ef33",
"0x846122707c37390bb02dd0626a17c157788d689f75eabed0764113805ad05b51fd6fd15b6ba3ce99e92f5f3605dfc629",
"0x95e71381db87c9eb858d15d5dcbbd7476b6d346361a140d247742b601313319d78e970c6c0c4d0f61de436f508bef6b0",
"0x8d3236e3710852aec3052a7199976704b74411253adb40d58e86a345f26dc95b35b0c44e9c9081d90a34f00c3cca00a6",
"0xb2dd15bf3ff16e0610d684c88ecee9acfc2dc4536b013802b68a9570cebba13efe927c00c3a49acef4687e8f76205806",
"0xb1b7ce41493432660f02c6540f5ac6e6ac0932760b6200c4f6608707090fc56b7156029716bc46223dcaec1399588319",
"0xb5d90e639fdd3cddaeb0a9bcd5cf82d261ba599003752f430027f3c4f62f7c9bbb79f47dc58d416cb24375eb8d212287",
"0x8c8f68dd6738f01086306f91a1ed2dab4fe45d8efd467a57eee905492a70b2558cae5fc5eccc0a8140d7dd09aafe5568",
"0x919db8efd8ecbaf9719bc53a67a0904467079c608fb58da60c1908df7e7bfff6faa4c283c2b31606f75684fe5658f723",
"0x8757d23c3994332fb7936341105349eb6c792ca05fe75e75528f227f7dd9c347123e62d92609ebd4a522d8a224260cf7",
"0x91361c954802797b432fbbc0264dedacbd1a889846e8248bb893c04081ac623bfe4cd6299d18aa125535db5d1c40594c",
"0xb7866abe75a0ea5d89bea40cd86ccc11b018b598bd78b646804a8340be100f8b86742db33662f0c4a2b1799bd41bd5c3",
"0xa0915458c729f5eeb2013e988383dff253d63e3227544b2634861f51215ac86d1ec82fae9c1d714179138d0d588418ad",
"0x84eb7e5c80cfdb46c1b76751c70749e00cf227411887a94156979276e632eefa6ce32d6aface1cf98a94987828b87b94",
"0xa19244b0c85d9eb013f8ec8a9c6e8d7898f5268443684a5d289772ade9005e137029ed6338139d67c37b30a53dd11099",
"0x85d440e53651a0810af96ee39891ea2b77afd39ea809abd10b4f57c57e0012cf0788d750b43752bd5540657cb057cab6",
"0x94d969f68a785b552c1c0df5eefe7430de7fc0508dc09e863133671f1204ec66fe5d5b9867ae5a5bfbb21969ee387eda",
"0x863e48b616bb9ac1314a9cb5f32ebc63793d4198925178d69ba9b09dee65564bbbf1a12c3d34cf9f902956039a96e86c",
"0xa988687633f8e3b5b745397517ed3c73b2c81532d54a7c2ad35c18802c28486186a0f3289f972b4c4165d08f6e1466c0",
"0xb9ae53749e33604cf61c1cbf4f880715622643f50bbe52b12078af908f17be7c35b126130c274fc3e0787993957b6118",
"0x80a6f1d93021f7ff8e4a773bbe6aba6019bfcea8a01591e76a085b83cf5613b8865fe3c176b3204e7f389ad3f27345c5",
"0x8f9ab50f8933b40d303014646de59891f05b2b001c51b9c0f39ccf8222611b34a339d751f07946a40b34d18b7083a429",
"0xaac8a71337a4c8a2fb9fb483953250ef9106b88f4a0b32963a02fc1fce4d79ab299b0dabb3880a670db0705a9e881de9",
"0xb28eb950151b012a404c460c22508ddf366fd2a3fac6b0759e788e3a32bbc0c7f14cbf154d86f64701cda1ee084a744a",
"0x958fb06714088e41a8a34eeb273b17c2fd2d5b3b4bd55460ca672e1d27687e79645a59a746412a854be24a69e48ad331",
"0xa08d41488f41d2fecbcb71d49a4b116d1fd68f6d2f85431840bb659496f6f0aa48497654e45f4052dd1b6dc5cba65ecc",
"0xb8e2e83207bbb078b8ad80f9a1ee596c0eb37963a8a4c8e4ac0722237fa5864a940888225e7ca9a2e1483455a1f9ac69",
"0x98c9480d1c10f327c8b83e3e381ad3f5eb07c64644f07d516b291399c8dc3c34a9ce29f527be48830fe4b4424ee849ef",
"0xb1e6c1c74b2db96d2722eb928dde08c26f92b7aee046857d6db9bb6e732947d90201c2ef74fa4ba5c6e7468c3e3482cd",
"0xa089120b71df272d4d8bca1f19a272ae40198a2826bc5a0820ce06bbec60873ff77bd92da55cad3a2b320fa1f1c8d1c9",
"0xa9df7ad4a40dc469d6dfabef27d504cf7f260caeedbd7e1dc124e3cab2cfd2a78ac8b2201d578e05c485c8c84556876c",
"0x994e46dbc0754cc9454e14739bc33bcf8e975c1c5210cd395573159d615bb3ec4ab66c15db52be03ad8801adb3dc954a",
"0x82f1f189ee1e0a65231e4b38efa7b17af6ad40f489ff521972e324eb5cf87ba87da4582654b119b42b5163f8d1646ae1",
"0xb0d19da17bef03e2479ed80049ef56f00b87fd4d81bf742bc38df68e0a4c3304657dd523d1e9a4751564f01925f09b58",
"0xa5a1d9942e04bf3b7ec8c03079b930d71546f30c6ca85756fa3f15435db26f9159b821e3951df3a85fce0dc83d50d6b6",
"0xa088ae2f47df64a5b61b63e4303fdeaf86ae7ac9692b63a1e40b02405f011ea318cc8279ed0cbbb7cf2043f6a6e1f6f8",
"0xa4d6a7014ddff4216a3c4b61bee32bedd51b526f1dd193d3341222f89d70cd66adddf9ebfae1896cd0e52a99aed9fcd0",
"0x8906d719a0e10a081c3e6a39b1a66cb92a3b6699a3227d88919cdffd27924e548147a112e4bd16dde3af8d66d1989c94",
"0x8584ac57bab7a0045c17e1e1cf5e54d1a679d035c5d1f6108ad0925def83e2d62dde6f664a7121164460d81e99a0e8b2",
"0x99a5119bf1879e6948216634963a1d45e24f4b50254e8b7437829b16f71829349abb08a85decb2ac647818aaf834dd0f",
"0x90b8eb9afe8e3afde654d6cd490a52cb3524c4c9049f112c852a84afe3694a13f94ef510f7baa04e0256961669c20ffd",
"0xb2250e38321d000d0b30275f25b725becaa6b749976f8a541b16451c2743efd408f18a9c8e822a686be0d2873734d6ab",
"0x8d68b707f2a3276a2a596b42b55126f8f247838ab44975ad16a72d09c50bb5fc0ae925e4752598b663eff158a63cec82",
"0x97eb4b529d1b24160e11fb82e07ed77408936d06c8740e2744e9c605c5cda6bb8fc00364223c0ecd7885c91ad7a9c0ae",
"0x8b29f265a7f740e33ed066dc77922ee71536af089a498283cc029a1794d68b586f58f88b6b441f09cbcea155af50dc49",
"0x8c38dd199efa756deae13372bfb451a4b65f4c0cf03437bce8270db057236279ba593c43878f96da6ef325ff8c5aebc3",
"0xac6b8f15e7362394b3628186995dbbcaf656617aa54e2b6b9add5de6dc20e9f13cc95266baaafb9b4033a2d49b59ec5d",
"0x883469e48a90e8bde06071cafcac211779b718cb5a9dc4056bd801e4ac2bd94b52bca2ef44220f4d9a071950b453c1a1",
"0x8517d8fc985a563635567746f37e355c1ecca4d6d833be113f4a5eddb1c56550d9c4935ba6b1a9b4ef339e74f4b6f2b8",
"0xa1e9120e5948e2aaffd5f73f54cdcf73e144d190771547ed6a7bde15c069e584aca8c16688f64f4f302c9ab81734f37c",
"0xae9dabc36ef3343ab35a220254a519b7489daae2b072b48eaca8cf4e5c2c6768ecdaefb60670f8e4d0f87d315554e732",
"0x83dc76080f43ba60376ff0725c6e5f2543ef0691ae8c996312fb9cafd96fe9d1f1402decc6d7cda33888458201e3f3ed",
"0x970909b1e7896ce4b6ed6420051bf2637afa5176341a109c1abc3740685255fca5de117dd9920b6fbe0661bc0e99c32f",
"0x81eec1abb570a193cb5a7ecf013600ad6a57c6df706abe136ea3939e737f1d2e229cdb22b3b6fcb929fd4bbfb5d4e4ba",
"0x88d3bb36da2584b643cf97e8bd32d88673aae2da35704b0d1f9e0cdc8037702ed68ef76d4b5f45fe4a078480022685d9",
"0x93d8e99f51d75e3b641e7bc392017c08bada18044bda8b13b40430c7e8e9031bcb325527d08c3b722bca62b3f983212b",
"0x977213b3226e038651c72009df27ad20a3b2ab18e55c43798255a5079e9539fb1189b8ea349fb982268d3bee5aaf831c",
"0xb23e4904082208626afd8eda061dcf025bceb7c527b24c460daf8cc7dce0da197e5cc71097b66e9cd4c9b41cacc0005d",
"0xa51109c127e8804d94a2a9ea6e3072dbe8d88b4cec766e9f4cbfe1f125acea91a7bfa3e1374f659b365368ff314a618e",
"0xb3fb9f3a9b4350479bcc225e215f6136c846cd96c9e0051d6782714fbf508d865317e6e01b8ae11777f1c76dd79834cf",
"0x87419a04f81a390b355c540c8bb646636a39c40ba3c426de5de0fa101516c00e891cfdf42231290617ef2c5b8c307481",
"0x907cdaa84c3a9ef12f120f6b239962b9d6fec947323a3725c2d2e89d7d12121b16db9869246a08fe221d7f06e892b363",
"0xaff9400cbb2bc2d98313a3409b026917060ca5837872efb61718fbe3225984ca66cc52efc3bae516dc3e4e32b2234918",
"0xad624c7352800f7a60c31414184f8fcdfff932865db219b9948b703f70ccacfd6e32d93b1b18404aa9148867adf5d1b3",
"0x8f0879a69c19c64d441517f3ac66038d973c53e908d0e06af6d55f69ebffe938754db4ded7625cb1adae85d2de0bb267",
"0x90b838337ac93890c1b36be4fa01f82bd02883bc0b834f32c1e552e94d8bc900294c3dacd5b7797ba9314898040d6162",
"0xb0a672164345090f2b6d7e88cc945804e83a2192257e8283c3b2c86069577e86a64594c27fdca870a54712f6acb0f715",
"0x8e8132252d1b88813b9abac072f9b687de5c20818f1aa6f2749580b3cf82503fc8fb53083549cabc0a65deb4c528dac8",
"0xb3fd9d37b0fa7af94ecda4a181bc7aa5a81232a814893067d102cd8ebe4ae94e5878fe8278efd6b970616512740ec514",
"0xb05ea114a1a3dd7d935d68a17cc6f134ce8d0b37f3af409ccbc0329ea5abd950f8826552d5ae61c80c732269ffce00fe",
"0x96be1257fcc70c0bbe60650007934a1a9c7c35c3696e6ac720f2010182fb5bb641730638ef28c37ae634278018b3d629",
"0x8b362cbff78ae1466e0972818c12b828a6479ef2d49d443e237d021ca2d2bb089a99e937520a809343ad6950dce9a1df",
"0x845c7dd5b0306486020f44fec96bec485e9fa2625537a36273c06fd9f90d3e374fa0bced34c5449d819d5a071ddefcdd",
"0xb679255d1c21e851158120a7146d758dafb67667617b347b0a8cf2e352a50f74a05a78910d6b13835ac0a999ce5f7a8b",
"0xaa3101f671f9a90c6690ffbc869be531e49c1013ce0130e25c1c799f111486c10fb8531e61f2cd3565bbedbaf16150e0",
"0xa1dd3373300ae8f8aec9557706da0452e9d8a7a93848c6cf8a13321ba8cb08155971feb5881c9db367174a4e4f16c506",
"0xb82773ac1e358a5d435bced3ef4cfe848acd6f840ab8e62b1c8f447d9323b797b12c7eaef80f32d85b21a69b82390650",
"0x84880bad103674e315a4a30269ddef36d3d423a6b82998a4eb6cf56e605ebca8107c2c13ab4570fb4fcf00877fadeb50",
"0x8b299134b5ef79cbe3096161bec9be16e9831c37474b1970a43bf8596675d92acff9810f6485451596639caa4de45ce3",
"0xa3ccaf2c6c51886253d759b43a1faadcc525a1550e966b942dcd4c06354a445825620a66b9b4efacbbc0e946ddb1814d",
"0xa4ba9cca0afd1748da00b2c11443928c8bbdea10c1c03c37ca4d515569f874a5e77e061c4e739ab18284884eb74e5c29",
"0x938dc0663759c9a53c5aa210778dc0c25b562ac07886ee1d8a83ae590c36678a9562d4337143ed3cbfc2169e4d889a22",
"0x879838d65c69dbf740ce3969cbf00f7235bdc42a529e636a33371615c5207956433589f96fc3e18eeaeb74c6a00ff817",
"0x8069de0cf6c52d1defd004e5e0659158112f7be7326215cbead103231657c1c2cfd1c0df8a8269fe06e3efbaebcb7e89",
"0xa4fb01e8e1cbba8b947b385c8bfecb3c775d8f9dc91348a5b8f9f3a7f95c22e158e24e8e978b4d5f36438626d924843d",
"0xac18c4ef29f9e8ef0881d7073fd32af34913634fcb941ccebaa7bcd7c4e37a0b22cab17934d206d8a56562f14dee8cf4",
"0xa31aa0413796432affdfbc1698cfd5ac99f007e74b1dad2d87cdea991f7b5f8b11a952beea06ce7476503db0c5eeb136",
"0xb2732adafdeaff8d116d66a27715a3a077b93ae27efccee4d9e6dcdcc5d95e7a2864344677a0904dded89c4d5cccea70",
"0xa3d11ae5366896270c3e4ff79f4e6e444d0b27a43e1674c8b15d77618f5587f2d73d0f0959e3eb5ad3a7a1baed30e0fc",
"0xb20e1e07e9a7088bb80cca2f40cfce7f38db7eb71a606462dc95e2252925c31803c2fa85dff92c56c9347158f9a4ede3",
"0xa0d4463a1c86a4a59197d1b37b9fa5407d6ace2c9bf9c5aefda85711c9d4a4ce683cc960b1d9bb6bbefbb8cbb65fa862",
"0x8e6bb32fe15e3873e9ddb0abb0c6db7e8fec2672391c2164e1e64faadb6af149cf6d6bef5ec70cd7cea2f68d88c24fa8",
"0xb97fa6c69f8dd85c17273fa3527416e23af062cf924c37d3f8b0eb45f1c980f7761d85d5ce3ebda9325b06028d20733c",
"0x8f0a49360a50967eddf6614aecc99d8ee57cc55e6264cd0d3efa3ea810965b7f0073944308fa47ea5c14806af6daa8a4",
"0x82079f1d853721be59c024043e6afb06d9a3b075b891b5e388767cf89696639483a2a2e433136d3701af7fa9bb452b78",
"0x8e176d3cc8748c7181d60d51a3d86cfb9bb3336abbd0924fead8433d4d85c994559443bc73d90d01bb032a33eb0ce88d",
"0xa39adb20609684007119b01f310b92627a2ee8b3a2e21d9d7bf7a69cd643765633d875b9e775f190d621754acd1d4ee9",
"0x865595f4e9b9bad4fa3c650d3230141f75176282038aa2648b82520659f2a3ba71aaa19956d58451db9c4ff8a74eabc7",
"0x920acf761419f86a16976470801937340f37355f197f9ea5b282355462e7fcf97d4699c330d587024c58b5efe63c2932",
"0x95c503fd385571b3871757b102e0cf3fa3c1f13baf7b882412ec75796343828b7412e2770d463e0e9b67c653b3dd087e",
"0xaad847a350ce394d34da18de9daf6288bbfdf4f1948876dad31ad509bdfa318d61c31de6f794be3a3baa8aeb76f77387",
"0x99c7e8642a3e0f9f396be35e0483d4b441e36f8e9ed82414cd535dd813955f0ae37d889573167498b5eec87961a47141",
"0x96f48d06cf59c2423cc74151afa1ef980b8aae505bd4136ecaa075b7be618ed82a9db72621b24b4249f34b4cea373c43",
"0xac8db019478448c99519788b04518746b7faf880f7f90b9a950eb55c1099105fc6a57a18083a1dea80d35f9b0ddb1d61",
"0x82116be28755a76441c7f12fb4a236645f9c434123da11212c339cb5ef3d55f429ed221df8b5ae0d35664b39fc44f0b7",
"0xb2bb2ee5ae6c98fc63e11ab7bcad676436ea58c70b3a653f51fd1f7d26d13cc20b93123d4ad9ecc220246dcf3fb429e8",
"0xb1689d36d5ff511663b8f62b91bd8d8c21e033d346ebe4cd1823fe5cd8557277d55979504b0fb4bc410dd7e8eca2f920",
"0xb8c0d78349a70d9ea38ffd12afe297aaa069613c66e7f488da97e22b9366184316aa0d72217612489a6094eccc748e3c",
"0x9973ceebfeb0c107c09751557d3adf0340381351bf3694ccee506624eb8098e6af659378d33dc29270c48e38c39e43ee",
"0x8c00e7ae582b5b2b106fb7b144aff6c58e57be3616a8d6a6955f4d12dffb40ba2f99d23e604e71a10101b197cb488a7b",
"0xb6ce4c880022bb68b8bee431ea0cdae177a52258ecd09b593f2c59e72f2e9fd2f2f2aec6b1bf60c992415e0f661717cc",
"0x82b7a640991ca8beed99362dc61c438bd6093f900e766df875eec84f44e9ae3d452f799b6a1ab3bacae7db256c80239a",
"0xab0c6789d6e28eaf0a340003c6b14340b6ae16917449c735902ca0189e7a31da343915e7e4e3e712e15b4c9699f00b7a",
"0x8cee81554c59e384d3e406f2fc0bca9e2eaed7acef5e1fe2a0b2cbd15b0e21cc252f59da154a76f49f696841b699026d",
"0xb2dd616cdce956db7113df8daf9ae645d94dfd8e22cee7a984a46dd54c1283003ce137b24a00aed90ee737e0ba18b6e8",
"0xa840e9751ebbba408ebb99a97d262cc4a32ed17ab68528f2bceab091f24820d4078561bfa2a70df947eb82b304041b09",
"0x929431435d32d41dbed3f4a830d8718e39d34e3667d2a32ac4c28a1a6072190a34b2cdd5d2b37ef2ad01aeb77174e80a",
"0xa1c82c32f1f0033a4b6c5569de4ced509d6434bf6c3b06610fd51bed14c4746d681b3ec7086064a13f08f256c0b3d666",
"0xa2b4bfd38bfb1ae32c3f913851e302dac7dc19e7765b68f4854fa5e58eab7dd19573b0b7f204984ff518e516c354325e",
"0xb83a7423f3ba68a63c791c47299749fa7c4a5a301a4383da094720cc2817cb650d0d3e4599957d11f0bf9df235355f8b",
"0x8c86a6170278304fbbd04f1af4533a9ccd9ebedb53272c071ac0f48b5a18e774c9f3165a5d21b45fdb269eb74f2d0f73",
"0xb264f6fe7c6c1609c314e85232a6efd17cad1f0dfb543ebda26f7ac29a3a48d3857ffb8a485ffb9f500aa4df93290fe2",
"0xa5843c7400ac44284b520a96f2b20f2783231475bfb1da40c17951f2443a775ea274d62c1784899d6680d2ef49f62e55",
"0xa1579d2df7002c48989ee507c13cdaaaf0ec655bc1b755f8379eed481783712370a6eb9e9de44f81b2476b38ebff57bc",
"0x9744863a878a5871a26e87b9ceac98fd0893bc14bbac03f4ea288133be7cdda51f46da4ff2f2105610d9d207dcfa1cbd",
"0x8393ddbaf4c7a83cded3287d061d0c635da0e9614bcbcd980766c5f2c7388e957c99b6d2c80dab5c6281c2f03bae8325",
"0x87f07cde830c0b058145cf80682fffd067ec1a24831cd558b640f3a447ae5ae656f4674c8e24d116d3e762603a39df79",
"0x9764ff4e03ee84fe6e7698d82d4477a2b8bc0e4e794aa4cc6d267da9f47917996ba4e5b0e54a285628a36b92e2e0f549",
"0xb3dcd26891a5358f5e3badbcd5961f8468432a8d9d9884c114b5ef4aeeccaa1ab85b35b05aaa3679a570849165dc0966",
"0x8b87424c6f4a73dec2a89ecaba737f793948dabd69751467871d1d13cdf464062be142b03eac13569d363415c8cff87c",
"0xae9e93daed4b7ceb2717b6e6ab0e391ac5b385ae6e233cae1845fee47260e94143420ce03bd254f8ccf79927b8a7692c",
"0xafe99fd065223dcc15d545b64b70e6e1317bc922b722e89f1f024693e9ad5c932c52976a668ca52172d40fbb28b73c20",
"0xacb5880c073a5e53e250a6beb9f44b965f53e1850fd02131a6c6d0e6d999a95410fb2ff1c4b32af0e7484ffa3247cb08",
"0xaf743b21956bb3ee43261b54b095eaa8aeedf0252de105b2745aa912723822964f399d7f2c982a3851753d7cba6a42d4",
"0x8d0538b59f1a54ce244577a35f984923491ca8882e0f9afe12b8c971a6fb2e1a4596092248dd34b0ab5f745a15b39b19",
"0x9612d40a8044c88b7293560b4ea0c7798eae251164607ce09944d5fa53a9858a304bfca84ad92fdee51214aa2298a8a0",
"0x8f015361590b4f8c259e9dd6a6250d8ca232614c4717aba8b3898a473de70e870e4210bb6727017663922af45a8e82fb",
"0xab12d9c1ad518246c0dcad4b37ff69ed54d2fd850eea7ea7d83c1410a0ec365d3386e4d12dfe7a6d99fd06c21d668a0c",
"0xa909e78d5c37dba7e4c699e8ca8a5d46bfc5400aaf6e823b6b6e47aab86b4348f73ac98baee5daca1d6dcf255fe1499a",
"0x87dbae793589502f13ffc4492af23f0ae4c4be12bd03dfd56907523e3625b32d1e3a7cd8741370a881bab0968aabacce",
"0x8d0a60c62c1b8720b4cc2fb93e4d5b12b0f9a0c41a3767c7d3bf4afcd3c4463e25439e8438bf444ae36507ffea6c70ee",
"0x8d1afac1f2e6e4567713071c5a9ab363cbf57ab68880b10e7191fc2243873c10c09aba5dc6dca62ff81d7f787aca3f53",
"0x924784599e9f0fd76ba246c6e7d7e778af31b6cb769538a5930fd2f16761f890d5122577bcd911649696e5e7a722bf01",
"0xb8972824743d5490acc8300e49d51dea8c3dc0b9f51691336161ef9f089112b4d0ca05b3fb79c7bbf938d32ca61ff73b",
"0xb0ea3038263744c3ca206d493524219e167deb2b9686cea2cd2872e531be1569d38a3393e153c67ace0d868f6fc08e9a",
"0x80a3065bcc75f69a353fa964a6309493f8ebf3f9fd606411e723debb624f24b7a3ee3767782e32e79822d33944c0559e",
"0xb26738281234f4cd73af760bfaf8edf43c6f22500e214a9777e330364b67a7132169501bf360d5a4db982534bb2acbde",
"0x990c264354aa3a8cbd3d0177eab937d2aaa1524fff595a153b98f0657b233c85b82ee4e06ff347b361bda1400587f1f8",
"0xb45d85ee75c919649c10b614ccddb9410dc2817caddcc2972f74ecbd6fdb20adab40538dade6bb4a89e60da6d0a87e50",
"0x82668615fce03cc97f305bc764ecc5fbab6606d5f984155b1cf9c8d3a28e35aa723c84d7a0d6225ea0388cc85a247b50",
"0xb06555d2e13a3538eba402f6f4c7c1b1fa307ffe982f80e883143f00fea96c010c5f5f5214e4958a2b921f26134bb18c",
"0xb76609bea11a3ed66147154b53bf0ecf06a1c05f0f03e39c24d7da9a98d9d3f705734a161009ebe2c0fc51dceb8a6a91",
"0x8e932030db7172d794a1d7d1ec5a48bb9ac11c7f954589d56b32733ab39c3002a20f90d85eb35674d6cbb2e988a7a837",
"0xb5a814f703890910fb08bf8ccd7586893156ff2e5ae9e30998afa86391cbfaa037312233d76a54d95d294b1af92f67dd",
"0x970d8783b1dbbee5d29fa50fc9b1dff4ad6f67d6d304abd8422ef996e4414b0abc11dc683d52e19332f37aa14f12ec46",
"0x9547b6e42020142092f38bbc608f665d757b7f867bbfea97b9e96de6d6b31c9530673f2910c8481f0dcabc12e617b95a",
"0x8ca996dc7c377e4ffb4a690d6335c0b6f32c98bfe17d8d00b2d26032775c48353ad824a88f2de0292727cde1a31149ce",
"0x8a28414e6fa5f30a097c978114f6483ff2e22f3504fa4980e1909abb0c074ed9daefa8457021f07f555b424a4584a440",
"0x85adab775320e482f90990afe555c6428d5231c263b20b52399ba045990f593ea7f1869181e65e25ad5637b58155e582",
"0xb8e1958b96eac2916077681f87b24770dfca5c03262be753a7266946c2e0ff70dadef7e659f7c45142eba6a898c7800c",
"0xb5f5c9d9841fd4a6aed21cad47fb29cb67a79524fb1d7ef3babb2fcdc47af3e9c9a23cb8bb4c94df329b7c7e30b15be4",
"0xb8642e9515b5d5b73392c3aca5276b9429b0b562e4214502361a31e8499bc76e81c0f37ab5219f78da4b3a988992d179",
"0xb34aaca106e83a9a00755b3a9e65bcaf7a2e56e746f14767c3e67e165f42ea507986001f3c7d16627923874a0748c577",
"0xa5a148b1f7fe608f96d4fe14ddec2b7a7fb073f702bc8ffb8aefaae2eea567187e894a7c8bdb5710d378882f25039715",
"0xb351b960f03ae256cd257cd10a0c2eff80e36bf2836101717dbb34dd5cf1abdd332f766d412f26bee7ca7e78570964fc",
"0xaeb665e1f3b657efc5d04e1d3ef2744d04b8e23a659a9837c4d48e87fb9f1e63915f4373019cc17d4134df115c6a728a",
"0x8da63a8c67a5f1e31f9d9da53e8ce3241f61e058a902ae37cbce44403acfbc5e19c60075d183d11f3ade0107f281953d",
"0x93991e6b898600f43f8cc530a5746ffeb0a54d94ee2db984d949d80e05edaa3f4fd164fbe63245a39e8bd4da13f1a436",
"0x898838c828bac3fd2d8fe291ce31c8b41fe297f96e3756c5c6af5ed8e35f2cf7b5dafe0a293ef6ee7cad97075cee0c1f",
"0xb52f8bb752f8523ee20df0ba1eef2a8f513e30d569fc004628c7d999466385d1b0cd9020b98fcd485fbdf52bd58dabb3",
"0xa3015811098f72b5ec06ef7509c091be01d48053c31b69c13498485e328a3ae1465b8f19cf46c2159d5f9834197301ff",
"0xae9ab6efa07e185865f109ac74fd857480d124559ead2c58cad47e6833f9e9ca32348e0a4cc48ca3d0763c642b55546e",
"0xa748ee9c8b99716627d4e3ecd8ca89bc81848e885a744fba15a77f416f913877d3b0cc3b7cd60191ff83eff2ecb95ba4",
"0x84eb295268a484c0cc19c4f009c20454afcc5227116b9f0f2a700bbbd2dde9e16f3d33e9178fa331ea2083a6de56d954",
"0x90e667bd86e09f9c17f79b58c0f7dc6ed72e8ff6e45da5bee96e6a39ad48706bee6cf1199e0f5ff9ca3cd18401011d5f",
"0xa15f6bcf39729f75a9cd91edbab5eabc4a6e30bb7b5361be20a8eef5ebcc5f852bc6efb8e3ad6e2f3e223c3c0898746c",
"0x8602f51a29b4b6a3974c4bc2b823faa18fcb2affff7505c0f7e658bb29816649f4affb3cd85db5e34ada8bd3a510d45d",
"0x8a96617b9ebb114e0cfd91aae4f9c76e55f64c6a52a164800f6baa2e82acf8e41a5b9e461ff480b60143659bf177cc0a",
"0x99fdcdd248c2c8c53b77f1a481364a9f1c0a8c3b4c6c21bfaf3843471d27acb1bec18f0fbbbc521f4fb28d5a7bf82789",
"0x996e2d8a3e2421572800a5037c8420a53b1a9d5d4dd16a91a7fbb7ceac7f4e00edde920f7b440f768382c919b746da18",
"0xac3bebd591dadf353bd12da06e9c32e9a04c13714252bce2ba997189e21242c0293859c92926702a46f934db2e9c7072",
"0xadce47345b15153d470468e8ccb928ead560360d9e2c33ae88870eee4e574accd5edeb8cd66c1910db085165a59bd772",
"0x96f235bf192a66b644ecc722b656e8e2ef94c34d0793958f75efacf868d59074821465a923086cc1a4657d2dab599791",
"0xac87fa07c0839e77bd31f9f214607e4420092b613b899a2e91d1b1dc95885fbacb84ac7edc0d796292c3efb2eca8269e",
"0x965d162fa061edd1fe4e084b79ecfea3fb697fb85ef1d360f210f15099ad68809a6fb19a3b30b190107d575c47160872",
"0x97ff19513f548bb64ddcc86f8710613160498f023169e4b304e9b18a13a388639dd9c3f098db3ec4251d40e70f85e11c",
"0x99ed88a419a8a3350c18a2842a1372e7b62715cb7ee1f02a395bffddd026994fd9987aaf5bc43da109b33a48465db49f",
"0xa50dada572d321c706462291051e7ff01444748c9baff58fcb01243276fb99cd46838862037857f89aef8b0019b876c8",
"0xa94b4a34b4a56105f8a75f3b54827d7b9cec21568f948a39b29f33131536ef49b690aa51e684613e7f995567c04b294c",
"0xac864e24fbf6405da04107033ef1a77c23d9c544463377e1939af71d90c87135f28e5b5eb7fd07aac50a1b91fafb0b56",
"0xb99a586406468cedce5906a7814526a1f3ca0d711b6bc672d6e2f2dd8fbe5961ccaf5f91af7c18016394e01b87c8d39c",
"0xa9f5a8e065c722f3f2d77b4ddbef35cad1baa86e3d6e2fed02115041bf4ce29c529089eab30ad8d529d177f60058ffac",
"0x847bab0b056fb68aa2905135f17b4ca5fbae00a76ac594a249b7c2d8cca49da9568b86b2390d22a5ef55106a3b959e58",
"0xa5f4541b2670982d4627554f7b71e7478d6c52fad02fa341ffb0c0c0173d6e7704267500f28bcca148f8cf3c46d2defc",
"0xaf917de53172d4d181d7a2b4479bd62289a5ddfa5ead47db8c7d14ee0b1f6771533d08c149d99503f9ccd86e1953a771",
"0x80ad56f3ab23014beccf9f5c7bde426a047014146b0df730fd422e8b6d5a6819515a95285c3cca931deb49cfab831093",
"0x88a2a13321601e5cab4128c84403d8caf831fa5bcf7694dc117bf549fac0b0fa7e2a3ed60442d18577eb0d167ff04601",
"0xadd057b8e000165c8768975a5ac0b927495e2a8cbe0ca6b8bd4fa9a0a3501ccf524dd8109f154623c66e495528b6457b",
"0xa1565172251f97fd0899f662bea254203e877b1a1021f6274216e6514a69ff7deac67846929838619d9a1079211a9d78",
"0x906f674a60d064ce572655e727e0268f4366d71b80eba7b6ed6a7c3ac6a90b148e48eb8df90d8e83c35059a643eea850",
"0x841c6ae2cdc69f568203664d79231313ca1cd1cdc96903e8b64fc1bf54dcab71dd1d50bd63048914dc1820d7ae6acabb",
"0x8761c2f127a4ecf92ff954e2b4821599575f2792e4f60250440cc5321e7d1d6f9cbb37a9139fb2bee1ce07d004351690",
"0xb6fdb1a5a3b6ca59001f0ca561655f890a8521f9b5492a2ae1c535bf91957918dd6fbb199445a47af44b267e3ff5aad8",
"0xae465aa3de6600d0fe714dd88c1f7486c0d3f647b21518fa01fd8ede89b0da55b04240ac0ac12815546c6103d5de0058",
"0xa797d4c62b6b0975c84888cfd24394b9a39eb764072560b50cff7a47c971f8f65cc68e896f72a58575b55f80093bc3b8",
"0x836c48f5f3ec315006219a1690b4d51afe19a7a853345cd95978f0f70299200f018f5095ec5c503255f933939c23be20",
"0x80492d8fb42c05edf75c55f655bc6b679a4399918b18a4596155ebe755f985a772f7bd60e3e5a0fcb7210137eb2483e1",
"0xb9742584c499174f512069b2764973938b360d72ddc7c223888475beeecabedbf571a7d9b9dbd0c314d3b9f192683577",
"0x889e9f0c6ae1fac0a2cc6c735609a6fcb12c14f3a5206ef6524e1f4997f12aa3b911255409e16d6cb220098764159af7",
"0xb6c97c40f05e8dac27d9de0b719f5484961f10a6e7e2ce076a156b7e3d37a39b50f7c89145aaa08bcc7e7ede16c44156",
"0x989fd59753b5ac74463b49ddea51799ebf584dbf422df6f118e873a8cd12e0b4e622e0c5857838cfd405a9696e8fee0d",
"0x8ee63a024172e24473d06f21c1c1fc6b8af62abc29cefbf885de5842170fd1056280c473e0afdb6cdf906445c483a109",
"0x86800e51f1a9b9eaf909ddaaf7899f2ee159fb8bad2abe563258c39fcc022ad9a46df417483d7978a7cc2c9be3e02ee6",
"0x846c3396afd679581135e6706e0490a55216e3231af3e36296a773b3852854c1d71e4d3bcf4d296126fb2743b20e432d",
"0x9814beba382ee6f642f0e192aef616c872ba52b417fd30d4c093979e40f250c9030fcb6336b12df6934942ba9302addc",
"0x92b4a93ffddb1996e993a2f6c7cc4ae9d0c27a6eb4d2d11d5d9817a18281a82565a0b9319651ce0048a113b1acdc1ee2",
"0xa40cbe2d8512cab4a4af9655830a7327e8b33adac9443a3352dd7522e373435d4896633119c24bd02ab31bc739a76952",
"0xa2c26078d20237c260da335bcba4c6859f8c607528db2c0dd6c7b4bcdccb0e46c167896ea95e82fd1c033664549e980b",
"0x886f9b9241fb2a4b8e6d20ed56bd37273b69a2274ddb0e8d2a88bfd796446928081ea3deaf2f58a8f1622a1040fda458",
"0x866502fe855c521bd508e5d6c526f3c575d57b53394db96736a01394966cf6c0190ef9df7b73dcc32065d754a3a2bc8e",
"0xb5e99444d32aefb7b229fa96c75f8aeb50a0082c9ee0eaa1121ef23d8df275d8dda5dd4e84fbc162fd031bd3ac41989a",
"0x84e157b204b327eced1501c038f9c026f39a0d3c4ec77bbed0388a1d9b657c6bae0efe71a1dd2dc30a05451c0bdaa1db",
"0xa99ba386e7135f530eadf47474893fe5f1b792de1ff4ec13b571f17bb68a8f6fc08307339b41dc3500dc0a4a44d49e5f",
"0x92a6ce8bd481fb76294da1b917d66d780aa56347d95292ece1dd9747233054560557fa035afed137a2c11d28b346ca88",
"0xa50af882b3f4d5a09a026958102598beb1e01063aef91ec57d01dd8f3e4098701b9ea333cfcbfb574d5614cc82a3e533",
"0xa8e81b4aff345411c0bdb77463a1ff0fb6029d0a918347b3241b16a611df1eaee8cd71bf48b69a38b8409adc6895ceff",
"0x89857c18f801be34161c6ab968defc4fd6b8930aa0c2dee6ba8511be6943888adc2e23b54132e20750872b49eebcc67e",
"0xaf1edc65d1d59038a260dc9924670cfc76216a834cbff52af804c484898b1ed0c5fa2aed28ff01c4399ad34c2e5f06ca",
"0xac79c3d3ecb1d2a3d116c195e6131d5c5dba0b73a763aa3fafd1e70f1859b5e0980c579a551c3d7e77229f4af2acb897",
"0xb17618dbc71a2ddcfd43b889ad448f40fc4e40111e9a7bc3fb76bf22d34806affa1127813d2e71bb79177658c72a729d",
"0x9965fe5a2cb82f93f391c62e745307db187243501ad6d73abf8f94ee2aa4cb2cc92ebea3cc7e285b89188e9de2224997",
"0x939f3ed64bf29a6e9470c033f8a6df58436e79a238fafd51a6d5479e7773745ff62784ce239ef1b492d3879ae66a46b8",
"0x95e35ead9951cf394e42fc1483aba35037c2efde0a4ab5156a5c567f2dea2ae568234d540da75b8c6ab6601a97120290",
"0xac220e5143af20ee3250e0f60a18f932b64d3d641810712f454fed03b28383ae466b883cba95f53a360b1521ca904445",
"0x8b3f7ec1628433128b9e3172c7dcd1956a77fdd21e6b2bd9724aa04eb2e104d15c595b1e3b90cf98775bf293c98d1172",
"0xaef0652e6c4b073842704e5ec1942fe2c605382357a0e0380f374a10d9bb6e7d491c54bc1066d645c1ed5bdd5f06c832",
"0x8f2d63242a182f390501af162773e490491df1a6a86a2915beb56b5db8cec93a6b99ea3eac2d4614c5c75c1e5b92b04b",
"0x8c38d2e532fbd6bfb70eb8efd7e08d4160d6654fb97f9655088180222165ca3755c896b987027b1fdf9c66e9817ad6c9",
"0x81934b99d474cdfa6f442042b079ae32f5e5dff4c3298e0f826910a35930d535257942531989c9bdaaeaa2b5ec2757d3",
"0xa3fd3d8747d634a7d6c9cae07a9dab86121ecaf77f6f2fcf84fd9d7be52b4e199eddecafd4da49ed59f5d1b9834b7880",
"0x97648bb736296be3d9ae7db61568f757fc3e2a9436f11eb48d083bb36e39ab6686214ad64115ae91bad23387c21ba137",
"0x97d2910ebe67fb471ee59e66a7e7604e3dcd09b10902fba996b7741cd526e56afd1796994a41af9c4b1495cf8b19f1b2",
"0x8c57e258acfa718d4d9935b460f7424a883cfefa071d95b2976f52c858963d86a56e05ca3824b4fe8dc7eb3d12131d51",
"0x873b98b8c35606444b57952e624153a7ee6788ec8a7b87c122dd696217105f744ae5e8330d1e19f22ac8f45f1f51dc82",
"0x9465528213fb38968138e162f90e5bfc427057fa1044a2696ea0119c0cfd862800cd3e2c2aaf5f4a7e07a8078d358caf",
"0x845bd5f00e1c60e4e1a257d92f71ca928f9e3329b6f2f5711d65d99f26cef47e8719565bfe80f7c552b685ad313c65ee",
"0xa01986e4db07c3940bed7ebc6323a3cfdc23ab7eaa1417b27bc173865c587e935ec6f7e39f42657a95ea5c14ec6a396a",
"0x8b16a700221f6dba725e355415a60c814735e4942051c925b99c537a71702337a2ba4e9ea49e1a44af43f3ff9658fdf9",
"0x9405961fbc894e397181fb3d696c06568510d64e7b3f67de790918494a1c42c473bd4188b5d8e66d81bf1b4886f21cc5",
"0x982dd72a5e4fd203113e309dacd5268c3d84c4404425deec858e26dc2e982e3ff17f1f412881664fe0f18c9a0d17632f",
"0x92cdb57efa100641bf0b8e3fd69f81415977c0476498cbd8b192e2b51cb5ae08188403d0890ce86b2aeb2a82259a2591",
"0x8ba186ce57b9c77eb38b11a13cf20f6a41b636cb7fa255dcf4881e31082e6830c7035bbe072df9d5f62c4364aeb058c3",
"0x8cd02f30e4b3b2ce39cec0be554f2b220f9ec9ad448d460f857a68dc33611c2c353317c1e649c1dff5f5e59a5991ad8b",
"0x9990d34e7c63f16d5d61221cf10f5f0a20692d3c0dab9ea9005369b26c9e80550260a978966786353bf9a55fec67edd5",
"0x95b233cf3a49bb3ae59b26f90954c22099ef0ca1d35ce531bd40b8eb5a041742b548f680b83f3dd184eeb66c253787b8",
"0x9420dc276e6823ac16ff2c0b13789ef8f405fd11c58abfea14ea936bb2f3b9954aa72e67845303832c4a060dd20e7cbc",
"0xb618839220ffa9ce90e13a874d9518d7694d01745e8e18983c320bbdd0ec68023a71848ad10c935bd7acac5227dba880",
"0x86d6d6585f921170ae4f5b30e3b190a674d987c61416c4af8b7054b77cdf8c211032055dd2e3d9b1c6a52f497cc66acd",
"0xb88da6a4095f1c381f4f721468cc3efaa079f663e723f4c7106e4c3819bc391c77289419f61413ad01705b24db8c0955",
"0x9512d144e4bb311efe840a7a2f941e2016a63c3dc6794b557a0225cb97551991453a21b4c4f17fe5f5e519503f9455bb",
"0xb26d1a3917d3eb13e42626f3138061f5147f193079ac6c134c1eeee6d78a3f7a7573b4a76ac575975cf763fd05b934b4",
"0xacd79b50694c25d90619ebe86db66b01e7b2fbad12fadcc6297f09590673263f43560dbd61d5e6d21eb4d37c88aead7d",
"0x99649e888b1d78e4cacd491ae4d611846dad6fb164bbf0fa71624181c892079a0c2478c3da74be6daacca6d6ffbaeb4c",
"0x95e55dde9916dd58344d04dd81e6c63946705202fd54263ab56e06e33579fa1784018e554664f4be4d3964e8d1d65143",
"0x84a2f1df8ff3ab182b142e20aebf5ae1a5c1f60497bd2a0c248bcb69f7a31b8125c41146ccd8cb1c1fc91305b6e648d2",
"0x88bdbbb63fa43ee36567a679c07e0b40d6aa7a02a0977244ea3159556cfa22f26506eab0be8b5527c8599a404d37a04c",
"0x909aebf18a2507e1d8024509912d84b57f14e07a8f3c5d5640a8b45d47d275d409edd1b75ac11f293b783705b6e4c7b6",
"0x8f6c67973468647303873453e9350b9e1395e1bdf03bdb6e50aaf2f12ee933065e40a97a65ad9a98479393390ae6091b",
"0xafc2413e398b214d5873dc4734a9950de0fe03092b538112da4ca5d795bd12cde9c68748b37b16552c404764f3e8a946",
"0x912dfbbd1f74e25d30d8c657d77c1b5f00470835e7b7e9161de9ba06ac79d8d5855ee3a45b41809444df0bc5968fabdc",
"0xa22ab7c03f9a10ded06072b49c7d634b0917c7f3f2c9fa017bbe7b742f7032912d57b774a5c583894c386278f212cefd",
"0x899601329bce0e952fd9b34d286f5b050cf9b1aa97b24b8f1303814edfbdbf20970f349e1cb6007f7b1cffc434927367",
"0xb0685a029159c48458de023fd9a4372958c568a0c9c9df045fc125ab1841a0cbec434a9ca1c064dd6b4e58dbd0168b89",
"0x93e49fb34a102ab101f7f8d0319ca5b023c1493617012778a7fb5bccf2cfa8da10a471cff5ae29c030215df8060c6d0e",
"0xb28cfaf69a0652f84425c8f4c0e9aa498a5039d1a1528917e9b69f818380e9b827718e4c68f1b27fd8d776937cb65c31",
"0xb158b4c569451f045b5065d35175cc74a542fdd03e3a810c4418c71a1d89615dcd3c4493585c16b3738d4e57d71f3287",
"0xac471a115802ff36d0cfd1fc3b85f0cfda25effab7f9b048f75087a146117e28f53200fce337942a5a7b75f7ff7b24a1",
"0x8569f520af4d7ff112692672ac07ad773d32a95aa9b4678982571f9bc19cf85d17b9252a2e87fc0dc8795291810c1ba2",
"0x88f38e2816951df10da407fc31cd21caa441845b14ec2b8c96870385235e3628c0833219679d83a71fcdf86604fb213c",
"0xadc922cd7bdb46390ffcfd3ea3c5cd2a9cf8077061601b8eceeea0aa784328bd5768594250b78e840b1d605fdbfb9041",
"0x84335a5a7436e24e4bfb78399a2ae3302ced9f98b55f0bd2b87f1d196865612c585e90d905c63d97f5e5daead9078abb",
"0xb6d0d325438f7d79ce4d3c298ec74c3f721b6fc5bff6a94d76320fbd1b79f7d78624553b0435cefeadaa580eb8893666",
"0xb5be59d74d57275b2f9b4df826915528772e4d2220b183927948d89f3fc5fe97eae9ca8c6b464ed39316ae2be8379eb3",
"0xa5a82eba2d1f3435f020237141c331f6d2b8ce485230c2fd9d3d8f3eb00e3bcd0b40bd63dd16fca5fb6e6e4a0b40ca00",
"0xb4821ec85d66d37bfb85f415ef67b285c46a588e88c902d17c7cd50cb6c6912f47545d398546866b57a5df43f3fcc819",
"0x8c52935a901766b3832f061eab2c638f42e48a8df840a5ca66a0eb92b6b1cabd431521284aad533112c5c6a178d5462e",
"0x934efeabd1d49604df8555e38818c11b28a0770c6311c4753a68a875cb41543074d303e96ebeeb80e11573d207df9841",
"0x94d0293c1235d080c4a076f83e5a78039f164e01b046ddb63088cfb9a65b3b2081d3d97d546bbdaafd641ce69e612d3d",
"0x87da2f3d172ef3393d3c525c525585788c51f1bbb88b5cf022eb9efe8b396ff3f304ebecc405f3b8d79e0a69b23c5cdf",
"0x827dab9ee6e8a5784c583f1c771d7eade45241185b1d570b2464de062a5c0258112454c6183dca1eb406de6f782fad13",
"0x8007650d6aca455db8d0a1621e199a4356027ee507599eb9b752fd51886a8db6a198e783e42b29ba94a668d43f6a1c0c",
"0x872932ff6657f9c67f8ec81d19bd667669019a2e45d655757c94a36a81c42bfaaf466ddadfb060d6f2f5ac844a405db5",
"0xb7b03db075de05577a246a959875814e89353331e359273ed1cdd8d762797e515f0480d7ca577d40522b6535f83f1a03",
"0x8cb7231e6f71504c8b59b2760a3d7a867436f25b619706d0e0bb7fbcd5c99ae5c271a44269905498b4f305f9866d4513",
"0x9030c0b1086dd003f556cc0b1449ced4a974238bf8dbe1365b5d615acb6d1c3107342a332568616b983cd7c858dbd1ed",
"0x8b974b847b58bd9277a8c993a34723e65ceb24b0f6c5bb69c28482996b61108fa14ef51c4f9080342ee80b6e23c278d4",
"0x94f869dfd06e01c22b7d702b15b572416006d8130101388f06299ca87450777c07eedde64cb48ea50dd82a0fccfbfae0",
"0x979c4d9e18e676c61f595dc3e60ea6ba89b7397dccb81193456f6dc1aab1fba30bfcd5ff49a2e27fdbbcedd04d83975b",
"0xb30d66d143b14ffcad2568e520583568e2da61ac6a4e81dfa1fad5c01bc96ab4bea4ed9cb8bd0a978e656aa7580af76b",
"0x86b657d53d7b06c6d04d333da9c2b118d498c652c0501f2e4bdaf7ee72b423b7f5640c9dd67534f61c056a86a8060e74",
"0xa2409eb8318022162a65b4ec6b3fbffc02c7c8cf9747629ab5ac19640b076ae3eccdbf6c26c3a08545274120313108d4",
"0x87381109567bc1b079d5a1e12ec8a8f62710a99e2c9cd2b4de3895d8513553020ed516f3086dbf3372b185bc98244784",
"0xb492704dbe3d60511430123ecf77d2cdcdb73b68de00148b2311022089c59b3cf59a7021a2012f4d71155a68dbd2b6bb",
"0x826a97d8a58f399ea95a30b219ed1b80d88f7773fbef22a9b4b429ea02ceeebde42cdcff97fdfc3f25cebab8d5db1e38",
"0x8ca3d262f5a90ebca8233d9f5e98ec2f807bfa4ddde123163a2240527ec69268ecb893d01cd749dffdf4771d0538adf2",
"0x94fcda21b7000e6f253762b5b955cf6ad6ac602ab08d6b804070bd4fc46a7b97a990358c32278ec4d677c578e9c445f2",
"0xb23ce4c33984641f53d7445a5982807bac720be51947b5bd18c194ece1b372f41dac4ee3134b16d6227333e1787dc9ff",
"0x8353f6019d08f356f89cb42751590731eac869bc801b6863f9bab6495eb2141f3d0dabe8daf1a46ee97e8aa567b8fb12",
"0x8d2d6f4c7e8b35e360ee667cd3dfccdb159be03ca912e9257b315fbeecae9ac4d3e81645d9e245170bbb334edfadd261",
"0x94f679e2765972619d0cd8db47a4b975f4216695742f329c4c4b82819914de7d2721bcc8c717789a622b0ef6a641d977",
"0x8d758b843a3f65304697788061e1621329c4a69cabadcd27f1529b5e9bbf27c3661639459d67b0c62d258b5528f5d48c",
"0x98db1682a10a2cd0a966c6cc6123a7659565ca69407ceb141b25936b501b078b2126348c33f005bb6cf27807a98471a9",
"0x84258350de0b35a77ca171de690c6ef48c662ea7c9ad7db1d4cc279723150eb09b35b1cddcdfc8f7512d55332f43d529",
"0xb912cb41f3eaa3ce94a2191de5e3a04888063618e5642ebf67c6c7c40bac742b75695bc48fcee4fb9105d1f91355826b",
"0xb96bc5e46825c3357313e6cd00f5e6977dcba5bfee3e34c2213ece235e7cf96f8994b04236fd1d2afd5750c50e1e0fc9",
"0xa1c21c7f051e7cc99ae2fd00aea8088faf1016cff1f3e17b93f7443c521748894bada365ff095ae3d954b00b9bb3cec8",
"0xb2de1de564cb50db6da6fdb2eb5cef430a8582c529b809170128e0cae0bc68de05385899c28391cce391872b076f4fa4",
"0xb1da5768228ef8946946f89456983b23dd263e7918c749c40a38b4a1f5a1f155c0acb5764afc53c51c52ff3a1852f764",
"0xa3904f2e1e7821c7a368d2f871fd8175aef3d248f54cc5b8de0d6af4a61c34232a46f30e89387f6ea02150703baf636d",
"0x98254547aacc25d586bcfe5700135e096558d2554822a9d75ced08172877a48d1dcf42d0dead7a60ac9d601c8acf4170",
"0xb52e9b3387c2d7ee722605131296daa707d0475281de82c4327de1fd6b4f6a2f1d269a315d6f9be64928a7adc858528a",
"0x97f4f9c2035246e083214809d6e2ac115d9c13ff12bba691be0f791e090b92b5d16bd415a87055298f9baccaa7aa1feb",
"0x85cf8c900d9fb3d06a2e0e799dd0cdb46293bbeed4ba99480955d1578066bbb99e4e9d2835d4226fea56c5fe454b8999",
"0xb14661adce383e44956e00f0fbbbdc2606a8b106f5b4f4fb192b6ead7b4a5ac916cdf38eaa4f4dc84cfd47dab6b3bda7",
"0xb6794c211e6b93baf50841abc29646daaeb7324809028da1015f7edd881017c873afb3e599f58a43042162f824c8aa55",
"0xb9e019de5322e82e1f2170c23d4411c5e15a09d74185304fb61f5ea66a5ab9aff6527d110e910ed38c369128a05328ae",
"0x8b07def191e57deb39c4453b2ab4b380cc58ecf6541ec0e47664ab0341dc2ac53d8416fa1409886f289aa4e28f26b190",
"0x8f18bfb2bbb684a40d5d162adca0c2e42b71d73da340126a567aabb6ce917ddb079569898779a7002e17872345f80fdd",
"0x95918589d65766ea2af84dca052397cb78d3ebbd39b6342c1e04641344b0c272d4c40ff587642f0c9479e2ce0161f326",
"0x8d6dc90aaf84be914eaa08150994eecf98a67cd80daf6cb6186bc4048588deb920e0a0f17ae81f64d1982838bfe0aad5",
"0x85a55015ad3cfc3b4a9bbf939896ea543c2f9f9d60d3c9aa35378a845172ff2eb2aa6d2eb74c04e41819fbc61e46a8b9",
"0xb91fa511495449e01da94a879edc72a9930467952b8c6d36a27c4d80cc5388a6593590684340e33130828c36b3ac4d19",
"0x99b116c08d8306873445d1e0808a978b321267fa02146d54ccfd7f7925f452a3763e784ec6dff0d616e9747b3f10dd3c",
"0x954e3e022f99cb27d3ede457b0182b69103bab3909da373906483b24a6437fa8aa31aa0d23463da203d34afc52fb1a9c",
"0x824426d040207ef0c9292ecf28f76cea3486d48f29a21d16a8b2caf6e13c2a95e5485bfcffa8b8dd6c5cab2341adc1ab",
"0xa8bd637e56b193b2ebc2fbfab8bd4531bab34e4efb4d97785e429268c154ececc50d4af45e5be2de9c2184c77bb24f2f",
"0xb9759fb6d6e82a2b5d910fd87ae6ae13e6524ce9b7b299ebb3014087f9262539574c93104ee21b10fe3a6d2486ffe80d",
"0xaa68bc8299a8d217bea72a82aa2871b99ca4221dbba15ff1d672144fcfc651de005c9c646f136768381ca5edd96ec2c9",
"0xaaf2bf67558d6b235fb6ce217c4ea0c2b48cec9368ec6728da4223fcf671b05108945e71d95e2175f6e7cc65529626d0",
"0x8614eb85640e4ee42ee58a1f59cd30f0ad24888e444d0dd2ba575317d563bd2109f11183fe21ad306c998715ba83eae8",
"0xb794c23f3d08cb69d06fac77c3d4a9b960efee4b5a61bda6d9af2dc65ff3f1d32929c089c881a1d41491a625fe2b4888",
"0xae5fc5367a8b2ddd2379609f72b0a300095fdad461847982241eb913079ff8b31f7fbcbaf5ee7210695739da453c8619",
"0xa433a91bfac83b8be7e5ce4752c7ae57254355efa85ce87f06821d31b71f7ac626ebf2f6eb322a1c4a3f84fa1396373b",
"0x842419a68898e2b5a8c438046329b5cbc7af4e81ffa55e0f527be0307b9d21faef62d8b63e6f3df24c80ae0b33c69a25",
"0xad743afa331f3eec7a7b9b457837bb025c072bf4fa5d4a4f9bf728926ef366892940429db1e2af8563d19a1767bd137e",
"0x8886887090a855681bc280f69e4729063474df5ab3cac979a271517297150df89d39bc602e0c724d0a406ce063e2dc8c",
"0x8064940c76bde4647a3029d3cc7e337533ebe997143c938ccfe4c429a9da4168950987aab415feebc0a74a043eb6a38d",
"0xa12b03821f785912cd24b2796d7351ef7b64fe3d52ed622fe3f150b5916c97476ef1e77fc1733d67f927a287c0e2d488",
"0x8c97c1611c893460f66a11b1a03f8f782e91b812e77794c9e393c3a9b0144e226e37dd6cbeb2ff87465ddf4bd98f60c6",
"0xa8a439ae434c8b1e5290f068f9dbc50b5a0fb4730969e89d8d5eb5ea9c32762050427efc0c9866ad0d80e990bd83be88",
"0x980dc66730ebb79c7ad293a10ca1068d25f6539646fb5d10ceb79bb65cc22c96128ce5e0029ad87b2da790e6079fb8ee",
"0xb433d7378e81a9fc7d37d9e56020195fe20f303bc35490ad01a5d77e48ba3551fbf07aee47d4ae3ab345a0c2a6162f4f",
"0x99740a52f211f6ea121c46118f853a375e19cf9cb0fc6241847e49b9bfc89f878d1182d9acbd1f48e3acd0ee5d5251e8",
"0xb823a3ce9b30539fcb5528a41aa7ca2ca98c07a328a692ea694046ef06a0aa9e996f22194c24349c622f48874551d57e",
"0xa018679c09ed0b25bcf7f6cee256c01f11d58ba04a88f02ccf1fb8623cc97c0a506571a0f619bcdaa0a3d7fe05599e4f",
"0x99dc1d8c061b5985932dd679d270ffa69bb619f9de6e8d067e9117d9e159604c4298a762bf4f831e46ea8758a2dc5698",
"0x8f9d1d6a3aaae6d39cd958625b6ae5ee84e3cae24a3bdf110d0dbb520850ffbe6387bd40f2ab23a6a04395b6adfe0ade",
"0xb64144211a8f90ca18c927fbdc3d1cd7b980e87b266d087d6cceb1c554428f2e53581eb721f74e44ef0f791d5ea6f5a5",
"0x94d904a3d1d47e5a669dbfdea2dabe6c7b28d2f5b7fa5195e4d2b27ae29bba7c0df499a3f02cf7b84bac0fb1d7e2f91c",
"0x917ca7f7f3ae7e9cfc5d963cae3b684064d02a0f09bd99e8cc6bcbc95405edd21c81d334bcc9fdd831e5c494a36424ed",
"0x9749f9f12e620bf0919f4f4023e34de4d9decaa5347e5de6093bf3ff343b1f20b8297aac27c2cc75f7f005c54f047cc4",
"0x818d9fb045f6d2172e025f331e976ef3da9ce8f4d8fa3ebd4dbfb66380965a73063438315534998ea42f9e8fb38bcb27",
"0x80770db86a1086d66324b4685a8a47e016e1c1d69e0a5b6bada8438115d9af0276b851bd1e67b1e29b9e11a6b6390721",
"0xb490954df1d5153850c82b49b4b35e49c80947632293dd7681d2647bceaa808c6bc1627f5cfd00f3858494cd0501d9b1",
"0xa6f8d1569a756e657c7588305b44fea9f3379afe1d56254851037d067fece0574aff5f046c7771fa368c48acf87dffd3",
"0xad88ba385d842c199307844293c3fec2b325a38973f88210c69d5d372c129a12be1f67bc9636360c70101ab3ab720c43",
"0x8e18d3b6392488d9e3fe5c9e04de02c3686b441f5bf5099434e9883bf03d24cc163e5fc6b72ebbfae96862bdaf12393c",
"0x82939bdceebf95c8739fbc99384b36437474f81b7370afcb3fb3c47ed0651490817303fd1d46a20ab53aeb65ff0b2108",
"0x977840a496f2d282309942a8ebf49cd2019e951e910645c97d2da0d26359169c3f7be0803a2db10015b64c2e64da729b",
"0x8f93d2d7d9ed3f046612b5c3f9ca056d2100e7a0e460ea0c35afdf8c86c4100495df17acb23d08a27f7c8c2e09ebf8fd",
"0x8ece1c91b83b984d14c9be18b776ba2ac19956998e89aeb0e90d0ec939c1b1a5d1a58f8e24555750a3ed50493031c4e8",
"0x8027037bde86bd875e0e91c22f1f9244a08043c1c5bb955d7504117796111673cfcd5987480dfea3c83b9f97f931751f",
"0x907eb0d7f29b58f55157ef925a9bbee5903ce4b5372052db2cd12fbb6d154e71f7c87054114e08dffd6b7f09e752a0aa",
"0xb1225e7e495ee2247f4dec095de6147168b73d29f94a43aef96ba158a67e2fa8bb55b83880d5ee6609b2498d9c88d32c",
"0xab87fb5c2e69c07a3a6a61e977c01dfe8b4e480a1607311fb632eca1059e5787b3485cfd1247860b89319c11a699fef0",
"0xa1b10dea9d2a769747c064c6c8df442f689825291be227ac096ab86434bf4de5468fc4ab00a80d289c27054bc3564c90",
"0xa0c0945254d58678f810f20b06a0a37ef76247364ca2d1f577f6cef6ccac8c9d8b91f3644432b3d846c68b22e5ce9447",
"0xa00bd53f07bb7660a647932440f8842ebec713e61c6d4ab86520e0094a2edee0af27529bfeabd79a14c5e79d9eb2b81f",
"0x817bdfa32e209c0abee6d2a1ee196809988394b4b088e006ff74729c7d755f751a2c5a4a492a87f281d9f750b90ba862",
"0xa191ddf009ad920f470c41826cc1821dd47ff6336b956158c09e491f782fa537d25b3bd80fe0b8305ca700a73ebb40f2",
"0x8f48e5baf2d07ff36386fb453438b50f6d6304bf8fbeb998072512c9e5d220e4f296719115b714aa5d73e8aa8867ba95"
],
"aggregate_pubkey": "0x8ddb507d04eea8b65adbb013cdf68834758ed2d3f1f0f8dde177f5e50740e5c875cb1d5ea0b758a127e249fe3a5ecafc"
},
"current_sync_committee_branch": [
"0x6d160b5b72f4e631856e082ba92d45d6b10eea95dfa092ad2c68a2d186d37752",
"0x94e5f0b9e78d585d80860aa95e6e7d91ddf88e9b6844c6869be5c8fe7e767da8",
"0xe709171a588e1f8f9734fe73032fcf977eb8c18dbe456646bd59c61d52a1fa59",
"0x1b51f56e29093ebddbc1ff38b0f520cbc619608e4f05ecf839cd0f086f83588b",
"0x390161dd73402d2284fc6f4526647e121cb764a86a654998bbe891d9a9a6a3b5"
]
}

29
consensus/testdata/finality.json vendored Normal file
View File

@ -0,0 +1,29 @@
{
"attested_header": {
"slot": "3818190",
"proposer_index": "25281",
"parent_root": "0x1dd492af3d3032ed3860b80dd665cbe6532540f9ea0e4eab94509edde1c415fb",
"state_root": "0x49d23f99f6870b0c1e911cbd1fbb92adc5a7d95cb8cda1f5f0f6086ccb098324",
"body_root": "0xa8f89861ef4ae81125bec76fa200a28150005ab3fc5f4b58743eddfbb6c9e23b"
},
"finalized_header": {
"slot": "3818112",
"proposer_index": "160102",
"parent_root": "0xd8621bdbaa5bf4b3947f56af917b2558bf1d3006aef58811ad80c555f0410af8",
"state_root": "0xcd46eb0959ebedaa6b78b270b8280981bb41205d9c604c1d9a547167286fa9d6",
"body_root": "0xc94f81458235e538bc6160099b8f7fdb73bce9d63a68e7def926dfcfe0427635"
},
"finality_branch": [
"0x14d2010000000000000000000000000000000000000000000000000000000000",
"0x869277312d2050cc3a76274661a03beb3f0cbc19c75e91f2bac5505723f192c4",
"0x5030f60861b1b0a96f0c4804558926bc76875110374c49fce679dc12854a8313",
"0x1365f7a14a5b13886b5afe6e3aa0e831baacc30e26bb314392a6273b088d9b96",
"0xeebcbfb7a668bbe769764651ce9819be3b8c4d19ef30bd97772b106472a4df05",
"0x87538264f92a515e0d0706858a76ef7819d53658545a17e9648eba40bc3880fc"
],
"sync_aggregate": {
"sync_committee_bits": "0x7df83fd6ff5b7fdbffeb77efbfefefdfefddf8f7e5f7ffbffdfbfd5fbeefbfff8f3fff7dffdfde7c6d7f55d7fffbcfdee7cfadbd5fcbbfbde59fff637fffed7f",
"sync_committee_signature": "0x8f7cd24ce4d07f81319d8263a0b4cd35635ff1b476bdb5b23f4fb3677c82a895863e430f494279e75df88b493cb160460d2965f2c0c06a4ea5a9878eb318f46b73e473d923fd6b985ac66122118428e881347ee37c177e6810601952d3c225d9"
},
"signature_slot": "3818191"
}

14
consensus/testdata/optimistic.json vendored Normal file
View File

@ -0,0 +1,14 @@
{
"attested_header": {
"slot": "3818196",
"proposer_index": "162891",
"parent_root": "0x3a0ed66198e518928422cf2164d3a04f00ba2746f718f05c196c0e073ee80051",
"state_root": "0x859fe66e13da75d7f686581415f6b370c8d09c0bf83a6b019c74493c535387c0",
"body_root": "0x4cd79571a142221743ffe43439f2d7a2caf081a185113032577a84189ec7b25e"
},
"sync_aggregate": {
"sync_committee_bits": "0x7df8ffdeff5b7fdbfffb77efffffefdfefddf8f7e7f7ffbffdfbfd5fbfefbfff8f3fff7dffffde7cfd7f55d7fffbcfdee7efa7bd5fdbbfbded9fff637fffed7f",
"sync_committee_signature": "0x87c6142478c55127b1f570d115935383c5d4be650df710e935b3048322b0207372a5016a0b2e3ad8ef195841fcdb12c108e6960456c14e5be1f15f0097ba6c427e93796ae1da39c277b7b6ce16ad4d02196a358a59a3e476e134dae56d389e6e"
},
"signature_slot": "3818197"
}

3320
consensus/testdata/updates.json vendored Normal file

File diff suppressed because it is too large Load Diff

35
consensus/tests/sync.rs Normal file
View File

@ -0,0 +1,35 @@
use std::sync::Arc;
use config::networks;
use consensus::{rpc::mock_rpc::MockRpc, ConsensusClient};
async fn setup() -> ConsensusClient<MockRpc> {
ConsensusClient::new(
"testdata/",
&networks::goerli().general.checkpoint,
Arc::new(networks::goerli()),
)
.await
.unwrap()
}
#[tokio::test]
async fn test_sync() {
let mut client = setup().await;
client.sync().await.unwrap();
let head = client.get_header();
assert_eq!(head.slot, 3818196);
let finalized_head = client.get_finalized_header();
assert_eq!(finalized_head.slot, 3818112);
}
#[tokio::test]
async fn test_get_payload() {
let mut client = setup().await;
client.sync().await.unwrap();
let payload = client.get_execution_payload(&None).await.unwrap();
assert_eq!(payload.block_number, 7530932);
}

View File

@ -2,7 +2,7 @@ pub mod evm;
pub mod types; pub mod types;
mod execution; mod execution;
pub use execution::*; pub use crate::execution::*;
mod proof; mod proof;
mod rpc; mod rpc;