From 6dbc74729d80fefa34a8df6843795cde73eb2cc2 Mon Sep 17 00:00:00 2001 From: sifnoc Date: Tue, 27 Feb 2024 15:23:01 +0000 Subject: [PATCH] fix: backend for updated v2 contract --- backend/build.rs | 15 + backend/examples/summa_solvency_flow.rs | 76 +- backend/scripts/update_verifier_contract.sh | 10 +- backend/src/apis/round.rs | 198 +- .../src/contracts/abi/GrandSumVerifier.json | 1 + .../src/contracts/abi/InclusionVerifier.json | 2 +- backend/src/contracts/abi/Summa.json | 2 +- backend/src/contracts/deployments.json | 2 +- .../contracts/generated/grandsum_verifier.rs | 2744 + .../contracts/generated/inclusion_verifier.rs | 44947 +--------------- backend/src/contracts/generated/mod.rs | 5 +- .../src/contracts/generated/snark_verifier.rs | 17354 ++++++ .../src/contracts/generated/summa_contract.rs | 21591 +++++--- .../src/contracts/generated/verifying_key.rs | 1534 + backend/src/contracts/mock/mock_erc20.rs | 244 +- backend/src/contracts/signer.rs | 31 +- backend/src/tests.rs | 226 +- contracts/scripts/deploy.ts | 17 +- 18 files changed, 36740 insertions(+), 52259 deletions(-) create mode 100644 backend/src/contracts/abi/GrandSumVerifier.json create mode 100644 backend/src/contracts/generated/grandsum_verifier.rs create mode 100644 backend/src/contracts/generated/snark_verifier.rs create mode 100644 backend/src/contracts/generated/verifying_key.rs diff --git a/backend/build.rs b/backend/build.rs index 0cc6e4a4..213e4e66 100644 --- a/backend/build.rs +++ b/backend/build.rs @@ -8,6 +8,21 @@ fn main() { "Summa", "Summa", ), + ( + "src/contracts/generated/verifying_key.rs", + "Halo2VerifyingKey", + "VerifyingKey", + ), + ( + "src/contracts/generated/snark_verifier.rs", + "Verifier", + "SnarkVerifier", + ), + ( + "src/contracts/generated/grandsum_verifier.rs", + "GrandSumVerifier", + "GrandSumVerifier", + ), ( "src/contracts/generated/inclusion_verifier.rs", "InclusionVerifier", diff --git a/backend/examples/summa_solvency_flow.rs b/backend/examples/summa_solvency_flow.rs index 923409e0..f994b61f 100644 --- a/backend/examples/summa_solvency_flow.rs +++ b/backend/examples/summa_solvency_flow.rs @@ -2,11 +2,14 @@ use std::{error::Error, fs::File, io::BufReader, io::Write}; use ethers::types::U256; -use halo2_proofs::halo2curves::bn256::{Fr as Fp, G1Affine}; +use halo2_proofs::halo2curves::bn256::Fr as Fp; use serde_json::{from_reader, to_string_pretty}; use summa_backend::{ - apis::{address_ownership::AddressOwnership, round::Round}, + apis::{ + address_ownership::AddressOwnership, + round::{KZGProof, Round}, + }, contracts::signer::{AddressInput, SummaSigner}, tests::initialize_test_env, }; @@ -17,7 +20,7 @@ use summa_solvency::{ }, cryptocurrency::Cryptocurrency, entry::Entry, - utils::{big_uint_to_fp, parse_csv_to_entries}, + utils::parse_csv_to_entries, }; const K: u32 = 17; @@ -65,7 +68,6 @@ async fn main() -> Result<(), Box> { // 2. Submit Commitment // // Initialize the `Round` instance to submit the liability commitment. - let params_path = "ptau/hermez-raw-17"; let entry_csv = "../csv/entry_16.csv"; let mut entries: Vec> = vec![Entry::init_empty(); N_USERS]; let mut cryptos = vec![Cryptocurrency::init_empty(); N_CURRENCIES]; @@ -77,12 +79,15 @@ async fn main() -> Result<(), Box> { UnivariateGrandSumConfig, >::init(entries.to_vec()); + // This ptau file is also utilized in the generation of the verifier contract. + // It corresponds to the same file used in the `gen_verifier.rs` script. + let params_path = "../backend/ptau/hermez-raw-17"; let (params, pk, vk) = - generate_setup_artifacts(K, None, &univariate_grand_sum_circuit).unwrap(); + generate_setup_artifacts(K, Some(params_path), &univariate_grand_sum_circuit).unwrap(); // Create a proof let instances = vec![Fp::one(); 1]; // This instance is necessary to verify proof on solidity verifier. - let (zk_snark_proof, advice_polys, _omega) = full_prover( + let (zk_snark_proof, advice_polys, _) = full_prover( ¶ms, &pk, univariate_grand_sum_circuit.clone(), @@ -91,12 +96,17 @@ async fn main() -> Result<(), Box> { // Using the `round` instance, the commitment is dispatched to the Summa contract with the `dispatch_commitment` method. let timestamp = 1u64; - let mut round = - Round::::new(&signer, advice_polys, params, vk, 1) - .unwrap(); + let mut round = Round::::new( + &signer, + zk_snark_proof, + advice_polys, + params, + vk, + timestamp, + ); - // // Sends the commitment, which should ideally complete without errors. - // round.dispatch_commitment().await?; + // Sends the commitment, which should ideally complete without errors. + round.dispatch_commitment().await?; println!("2. Commitment is submitted successfully!"); @@ -118,33 +128,43 @@ async fn main() -> Result<(), Box> { // 4. Verify Inclusion Proof // - // The `snapshot_time` denotes the specific moment when entries were created for the Merkle sum tree. + // The `snapshot_time` denotes the specific moment when entries were created for polynomal encoding. // This timestamp is established during the initialization of the Round instance. - let snapshot_time = U256::from(1); + let snapshot_time = U256::from(timestamp); // When verifying the inclusion proof from the user's perspective, the user have to fetch `proof`. // Assume that the `proof` file has been downloaded from the CEX. let proof_file = File::open(format!("user_{}_proof.json", USER_INDEX))?; let reader = BufReader::new(proof_file); - // let downloaded_inclusion_proof: KZGInclusionProof = from_reader(reader)?; - // TODO: fix after the contract is concrete - // // Get `mst_root` from contract. the `mst_root` is disptached by CEX with specific time `snapshot_time`. - // let commitment = summa_contract.commitments(snapshot_time).call().await?; + let downloaded_inclusion_proof: KZGProof = from_reader(reader)?; + + // Fetch commitment data from the contract with timestamp, `snapshot_time`. + let commitment = summa_contract.commitments(snapshot_time).call().await?; - // // Match the `mst_root` with the `root_hash` derived from the proof. - // assert_eq!(commitment, public_inputs[1]); + // Ensure the length of the commitment matches the expected size for the number of points. + assert_eq!(commitment.to_vec().len(), 0x40 * N_POINTS); - // // Validate the inclusion proof using the contract verifier. - // let proof = inclusion_proof.get_proof(); - // let verification_result = summa_contract - // .verify_inclusion_proof(proof.clone(), public_inputs.clone(), snapshot_time) - // .await?; + // Validate the inclusion proof using the contract verifier. + let mut verification_result = false; - // println!( - // "4. Verifying the proof on contract veirifer for User #{}: {}", - // USER_INDEX, verification_result - // ); + if let Some(challenges) = downloaded_inclusion_proof.get_challenge().as_ref() { + verification_result = summa_contract + .verify_inclusion_proof( + snapshot_time, + inclusion_proof.get_proof().clone(), + challenges.clone(), + inclusion_proof.get_input_values().clone(), + ) + .await?; + } else { + eprintln!("No challenges found in the proof, This may not a inclusion proof"); + } + + println!( + "4. Verifying the proof on contract veirifer for User #{}: {}", + USER_INDEX, verification_result + ); // Wrapping up drop(anvil); diff --git a/backend/scripts/update_verifier_contract.sh b/backend/scripts/update_verifier_contract.sh index ec0af6bd..ad2735bc 100755 --- a/backend/scripts/update_verifier_contract.sh +++ b/backend/scripts/update_verifier_contract.sh @@ -1,15 +1,15 @@ #!/bin/bash set -e -# Build the verifier contracts +# Build the verifier contract echo "1. Building verifier contracts" cd ../zk_prover -cargo run --release --example gen_inclusion_verifier +cargo run --release --bin generate_verifier -# Generate Commitment for Merkle Sum Tree -echo "2. Generate Commitment for Merkle Sum Tree" +# Generate Commitment and Proofs for Encoded Polynomials +echo "2. Generate Commitment and Proofs for Encoded Polynomials" cd ../zk_prover -cargo run --release --example gen_commitment +cargo run --release --bin generate_commitment_and_proofs # Deploy contracts to local environment echo "3. Deploying contracts to local environment" diff --git a/backend/src/apis/round.rs b/backend/src/apis/round.rs index c462128f..30c8141b 100644 --- a/backend/src/apis/round.rs +++ b/backend/src/apis/round.rs @@ -2,35 +2,42 @@ use ethers::types::{Bytes, U256}; use halo2_proofs::{ arithmetic::{best_fft, Field}, halo2curves::{ - bn256::{Bn256, G1Affine}, - group::Curve, + bn256::{Bn256, Fr as Fp, G1Affine, G2Affine}, + group::{cofactor::CofactorCurveAffine, Curve}, }, plonk::{AdviceSingle, VerifyingKey}, poly::{ kzg::commitment::{KZGCommitmentScheme, ParamsKZG}, Coeff, }, + transcript::TranscriptRead, }; +use halo2_solidity_verifier::Keccak256Transcript; use serde::{Deserialize, Serialize}; use std::error::Error; use crate::contracts::signer::SummaSigner; -use summa_solvency::utils::amortized_kzg::{commit_kzg, create_naive_kzg_proof, verify_kzg_proof}; +use summa_solvency::utils::amortized_kzg::{create_naive_kzg_proof, verify_kzg_proof}; #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct KZGInclusionProof { - public_inputs: Vec, +pub struct KZGProof { proof_calldata: Bytes, + input_values: Vec, + challenge: Option>, } -impl KZGInclusionProof { - pub fn get_public_inputs(&self) -> &Vec { - &self.public_inputs +impl KZGProof { + pub fn get_input_values(&self) -> &Vec { + &self.input_values } pub fn get_proof(&self) -> &Bytes { &self.proof_calldata } + + pub fn get_challenge(&self) -> &Option> { + &self.challenge + } } /// The `Round` struct represents a single operational cycle within the Summa Solvency protocol. @@ -61,46 +68,44 @@ impl where [usize; N_CURRENCIES + 1]: Sized, { - pub fn new<'a>( - signer: &'a SummaSigner, + pub fn new( + signer: &SummaSigner, + zk_snark_proof: Vec, advice_polys: AdviceSingle, params: ParamsKZG, verifying_key: VerifyingKey, timestamp: u64, - ) -> Result, Box> { - Ok(Round { + ) -> Round<'_, N_CURRENCIES, N_POINTS, N_USERS> { + Round { timestamp, snapshot: Snapshot::::new( + zk_snark_proof, advice_polys, params, verifying_key, - ) - .unwrap(), - signer: &signer, - }) + ), + signer, + } } pub fn get_timestamp(&self) -> u64 { self.timestamp } - // TODO: What will be the commit on the V2? pub async fn dispatch_commitment(&mut self) -> Result<(), Box> { - Ok(()) + let grand_sum_proof = self.snapshot.generate_grand_sum_proof().unwrap(); + let submit_tx = self.signer.submit_commitment( + Bytes::from(self.snapshot.zk_snark_proof.clone()), + grand_sum_proof.proof_calldata, + grand_sum_proof.input_values, + self.timestamp.into(), + ); + + submit_tx.await } - pub fn get_proof_of_inclusion( - &self, - user_index: usize, - ) -> Result - where - [(); N_CURRENCIES + 1]: Sized, - { - // Iterate unblinded advice polynomials evaluate balances array - Ok(self - .snapshot - .generate_proof_of_inclusion(user_index) - .unwrap()) + pub fn get_proof_of_inclusion(&self, user_index: usize) -> Result { + self.snapshot.generate_proof_of_inclusion(user_index) } } @@ -108,11 +113,13 @@ where /// /// # Fields /// +/// * `zk_snark_proof`: The zk-snark proof for the round, which is used to verify the validity of the round's commitments. /// * `advice_polys`: Composed of the unblinded advice polynomial, `advice_poly`, and the polynomials of blind factors, `advice_blind`. /// * `params`: The parameters for the KZG commitment scheme. /// * `verifying_key`: The verifying key for getting domains, which is used for generating inclusion proofs. /// pub struct Snapshot { + zk_snark_proof: Vec, advice_polys: AdviceSingle, params: ParamsKZG, verifying_key: VerifyingKey, @@ -124,39 +131,53 @@ where [usize; N_CURRENCIES + 1]: Sized, { pub fn new( + zk_snark_proof: Vec, advice_polys: AdviceSingle, params: ParamsKZG, verifying_key: VerifyingKey, - ) -> Result, Box> { - Ok(Snapshot { + ) -> Self { + Snapshot { + zk_snark_proof, advice_polys, params, verifying_key, - }) + } } - pub fn generate_proof_of_inclusion( - &self, - user_index: usize, - ) -> Result - where - [(); N_CURRENCIES + 1]: Sized, // TODO: check is this necessary to compile? - { + pub fn generate_grand_sum_proof(&self) -> Result { let domain = self.verifying_key.get_domain(); let omega: halo2_proofs::halo2curves::grumpkin::Fq = domain.get_omega(); - let column_range = 0..N_CURRENCIES + 1; + let challenge = Fp::zero(); let mut opening_proofs = Vec::new(); - let challenge = omega.pow_vartime([user_index as u64]); + let mut input_values = Vec::new(); + + // Evaluate the commitments from the snark proof + let mut kzg_commitments = Vec::with_capacity(N_CURRENCIES); + let mut transcript = Keccak256Transcript::new(self.zk_snark_proof.as_slice()); + for _ in 0..(N_CURRENCIES + 1) { + let point: G1Affine = transcript.read_point().unwrap(); + kzg_commitments.push(point.to_curve()); + } - for column_index in column_range { + for column_index in 1..(N_CURRENCIES + 1) { let f_poly = self.advice_polys.advice_polys.get(column_index).unwrap(); - let kzg_commitment = commit_kzg(&self.params, f_poly); - // Do iDFT for getting value of polynomial + // Perform iDFT to obtain the actual value that is encoded in the polynomial. let mut vec_f_poly = f_poly.to_vec(); best_fft(&mut vec_f_poly, omega, f_poly.len().trailing_zeros()); - let z = vec_f_poly[user_index]; + + // Summing all f_poly values + let mut total_balance = Fp::zero(); + vec_f_poly.iter().for_each(|x| total_balance += x); + + let total_balance_from_sum = vec_f_poly.iter().sum(); + assert_eq!( + total_balance, total_balance_from_sum, + "Sum of f_poly values is not equal to the total balance" + ); + + let z = total_balance * Fp::from(f_poly.len() as u64).invert().unwrap(); let kzg_proof = create_naive_kzg_proof::>( &self.params, @@ -166,11 +187,15 @@ where z, ); - assert!( - verify_kzg_proof(&self.params, kzg_commitment, kzg_proof, &challenge, &z), - "KZG proof verification failed for user {}", - user_index - ); + if !verify_kzg_proof( + &self.params, + kzg_commitments[column_index], + kzg_proof, + &challenge, + &z, + ) { + return Err("KZG proof verification failed for grand sum"); + } // Convert to affine point and serialize to bytes let kzg_proof_affine = kzg_proof.to_affine(); @@ -180,11 +205,78 @@ where kzg_proof_affine_y.reverse(); opening_proofs.push([kzg_proof_affine_x, kzg_proof_affine_y].concat()); + input_values.push(U256::from_little_endian(&total_balance.to_bytes())); + } + + Ok(KZGProof { + proof_calldata: Bytes::from(opening_proofs.concat()), + input_values, + challenge: None, + }) + } + + pub fn generate_proof_of_inclusion(&self, user_index: usize) -> Result { + let domain = self.verifying_key.get_domain(); + let omega: halo2_proofs::halo2curves::grumpkin::Fq = domain.get_omega(); + + let challenge_point = omega.pow_vartime([user_index as u64]); + let mut opening_proofs = Vec::new(); + let mut input_values = Vec::new(); + + let mut transcript = Keccak256Transcript::new(self.zk_snark_proof.as_slice()); + for column_index in 0..N_CURRENCIES + 1 { + let kzg_commitment: G1Affine = transcript.read_point().unwrap(); + let f_poly = self.advice_polys.advice_polys.get(column_index).unwrap(); + + // Perform iDFT to obtain the actual value that is encoded in the polynomial. + let mut vec_f_poly = f_poly.to_vec(); + best_fft(&mut vec_f_poly, omega, f_poly.len().trailing_zeros()); + let z = vec_f_poly[user_index]; + + let kzg_proof = create_naive_kzg_proof::>( + &self.params, + domain, + f_poly, + challenge_point, + z, + ); + + if !verify_kzg_proof( + &self.params, + kzg_commitment.to_curve(), + kzg_proof, + &challenge_point, + &z, + ) { + return Err("KZG proof verification failed for inclusion proof"); + } + + // Convert the KZG proof to an affine point and serialize it to bytes. + let kzg_proof_affine = kzg_proof.to_affine(); + let mut kzg_proof_affine_x = kzg_proof_affine.x.to_bytes(); + let mut kzg_proof_affine_y = kzg_proof_affine.y.to_bytes(); + kzg_proof_affine_x.reverse(); + kzg_proof_affine_y.reverse(); + + opening_proofs.push([kzg_proof_affine_x, kzg_proof_affine_y].concat()); + input_values.push(U256::from_little_endian(&z.to_bytes())); } - Ok(KZGInclusionProof { + // Prepare S_G2 points with the challenge for proof verification on the KZG Solidity verifier. + let s_g2 = -self.params.s_g2() + (G2Affine::generator() * challenge_point); + let s_g2_affine = s_g2.to_affine(); + + let challenges = vec![ + U256::from_little_endian(s_g2_affine.x.c1.to_bytes().as_slice()), + U256::from_little_endian(s_g2_affine.x.c0.to_bytes().as_slice()), + U256::from_little_endian(s_g2_affine.y.c1.to_bytes().as_slice()), + U256::from_little_endian(s_g2_affine.y.c0.to_bytes().as_slice()), + ]; + + Ok(KZGProof { proof_calldata: Bytes::from(opening_proofs.concat()), - public_inputs: Vec::::new(), + input_values, + challenge: Some(challenges), }) } } diff --git a/backend/src/contracts/abi/GrandSumVerifier.json b/backend/src/contracts/abi/GrandSumVerifier.json new file mode 100644 index 00000000..4618cea6 --- /dev/null +++ b/backend/src/contracts/abi/GrandSumVerifier.json @@ -0,0 +1 @@ +{"_format":"hh-sol-artifact-1","contractName":"GrandSumVerifier","sourceName":"src/GrandSumVerifier.sol","abi":[{"inputs":[{"internalType":"address","name":"vk","type":"address"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506104fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e36600461040b565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b81600052826020526102c0516040526102e051606052610300516080526103205160a0528360c0528460e0526103405161010052610360516101205261038051610140526103a05161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016001602060406102208b3c6101406101606102808b3c6064356080810660001482169150816101c15773092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b60005260206000fd5b6020816064010180356020810283046004148416935083610206577f4e756d626572206f66206576616c756174696f6e206d69736d6174636800000060005260206000fd5b60005b818110156103b15760208102600281026020820185013588610220518209610280516080526102a05160a0528903905061024381896100ae565b881697505086610277577f4661696c656420746f206d756c7469706c79204731206279206d696e75735f7a60005260206000fd5b80600287046084010161028b8a828a61005e565b9750876102c457826000527f436f6d6d69746d656e7420706f696e74206973206e6f7420454320706f696e746020528060405260606000fd5b80359250602001356102d781848a61008f565b97505086610309577f4661696c656420746f20616464204320616e6420675f746f5f6d696e75735f7a60005260206000fd5b6080516102405260a05161026052608401905061032788828861005e565b955085610358577f4f70656e696e6720706f696e74206973206e6f7420454320706f696e7400000060005260206000fd5b803560208201359150610374828261026051610240518b6100c9565b871696505050846103a9577f4661696c656420746f20706572666f726d2070616972696e6720636865636b0060005260206000fd5b600101610209565b505050508060005260206000f35b60008083601f8401126103d157600080fd5b50813567ffffffffffffffff8111156103e957600080fd5b6020830191508360208260051b850101111561040457600080fd5b9250929050565b60008060008060006060868803121561042357600080fd5b85356001600160a01b038116811461043a57600080fd5b9450602086013567ffffffffffffffff8082111561045757600080fd5b818801915088601f83011261046b57600080fd5b81358181111561047a57600080fd5b89602082850101111561048c57600080fd5b6020830196508095505060408801359150808211156104aa57600080fd5b506104b7888289016103bf565b96999598509396509294939250505056fea2646970667358221220318c6c9ebb11e67ace979383e4cfbec7fca0a102ec89df3b690514cac14726e164736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063af83a18d14610030575b600080fd5b61004361003e36600461040b565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b81600052826020526102c0516040526102e051606052610300516080526103205160a0528360c0528460e0526103405161010052610360516101205261038051610140526103a05161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016001602060406102208b3c6101406101606102808b3c6064356080810660001482169150816101c15773092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b60005260206000fd5b6020816064010180356020810283046004148416935083610206577f4e756d626572206f66206576616c756174696f6e206d69736d6174636800000060005260206000fd5b60005b818110156103b15760208102600281026020820185013588610220518209610280516080526102a05160a0528903905061024381896100ae565b881697505086610277577f4661696c656420746f206d756c7469706c79204731206279206d696e75735f7a60005260206000fd5b80600287046084010161028b8a828a61005e565b9750876102c457826000527f436f6d6d69746d656e7420706f696e74206973206e6f7420454320706f696e746020528060405260606000fd5b80359250602001356102d781848a61008f565b97505086610309577f4661696c656420746f20616464204320616e6420675f746f5f6d696e75735f7a60005260206000fd5b6080516102405260a05161026052608401905061032788828861005e565b955085610358577f4f70656e696e6720706f696e74206973206e6f7420454320706f696e7400000060005260206000fd5b803560208201359150610374828261026051610240518b6100c9565b871696505050846103a9577f4661696c656420746f20706572666f726d2070616972696e6720636865636b0060005260206000fd5b600101610209565b505050508060005260206000f35b60008083601f8401126103d157600080fd5b50813567ffffffffffffffff8111156103e957600080fd5b6020830191508360208260051b850101111561040457600080fd5b9250929050565b60008060008060006060868803121561042357600080fd5b85356001600160a01b038116811461043a57600080fd5b9450602086013567ffffffffffffffff8082111561045757600080fd5b818801915088601f83011261046b57600080fd5b81358181111561047a57600080fd5b89602082850101111561048c57600080fd5b6020830196508095505060408801359150808211156104aa57600080fd5b506104b7888289016103bf565b96999598509396509294939250505056fea2646970667358221220318c6c9ebb11e67ace979383e4cfbec7fca0a102ec89df3b690514cac14726e164736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index 3ac0da95..33c86ffd 100644 --- a/backend/src/contracts/abi/InclusionVerifier.json +++ b/backend/src/contracts/abi/InclusionVerifier.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061563680620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"InclusionVerifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"address","name":"vk","type":"address"},{"internalType":"bytes","name":"proofs","type":"bytes"},{"internalType":"uint256[]","name":"challenges","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610459806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806347f6b5aa14610030575b600080fd5b61004361003e36600461033c565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610280516040526102a0516060526102c0516080526102e05160a0528360c0528460e0526103005161010052610320516101205261034051610140526103605161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600160c06101606102408d3c60843560808106600014821691508161019b57600080fd5b6020816084010180356004811484169350836101b657600080fd5b6020820135610300526040820135610320526060820135610340526080820135610360526020808202830101915050803560208102830460041484169350836101fe57600080fd5b60005b818110156102e257610240516080526102605160a052602081810284010135860360c08190526040820261023582886100ae565b871696508661024357600080fd5b806002870460a40101915061025989838961005e565b96508661026557600080fd5b6020820135913561027783828a61008f565b9750508661028457600080fd5b6080516102005260a0516102205260a40190506102a288828861005e565b9550856102ae57600080fd5b8035602082013591506102ca828261022051610200518b6100c9565b871696505050846102da57600080fd5b600101610201565b505050508060005260206000f35b60008083601f84011261030257600080fd5b50813567ffffffffffffffff81111561031a57600080fd5b6020830191508360208260051b850101111561033557600080fd5b9250929050565b60008060008060008060006080888a03121561035757600080fd5b87356001600160a01b038116811461036e57600080fd5b9650602088013567ffffffffffffffff8082111561038b57600080fd5b818a0191508a601f83011261039f57600080fd5b8135818111156103ae57600080fd5b8b60208285010111156103c057600080fd5b6020830198508097505060408a01359150808211156103de57600080fd5b6103ea8b838c016102f0565b909650945060608a013591508082111561040357600080fd5b506104108a828b016102f0565b989b979a5095985093969295929350505056fea26469706673582212207e5e1287edc06ab08a7594afbc051dee662a5f5969372ab655cac10baa4d2fb264736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806347f6b5aa14610030575b600080fd5b61004361003e36600461033c565b610057565b604051901515815260200160405180910390f35b6000610135565b6020820135838110833585811084169190911691856003818085800985090886828309148316925050509392505050565b8160c0528260e05260006040608080608060065afa9091169392505050565b8160c0526000604060806060608060075afa90911692915050565b8160005282602052610280516040526102a0516060526102c0516080526102e05160a0528360c0528460e0526103005161010052610320516101205261034051610140526103605161016052600060206000610180600060085afa600051921690911695945050505050565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600160c06101606102408d3c60843560808106600014821691508161019b57600080fd5b6020816084010180356004811484169350836101b657600080fd5b6020820135610300526040820135610320526060820135610340526080820135610360526020808202830101915050803560208102830460041484169350836101fe57600080fd5b60005b818110156102e257610240516080526102605160a052602081810284010135860360c08190526040820261023582886100ae565b871696508661024357600080fd5b806002870460a40101915061025989838961005e565b96508661026557600080fd5b6020820135913561027783828a61008f565b9750508661028457600080fd5b6080516102005260a0516102205260a40190506102a288828861005e565b9550856102ae57600080fd5b8035602082013591506102ca828261022051610200518b6100c9565b871696505050846102da57600080fd5b600101610201565b505050508060005260206000f35b60008083601f84011261030257600080fd5b50813567ffffffffffffffff81111561031a57600080fd5b6020830191508360208260051b850101111561033557600080fd5b9250929050565b60008060008060008060006080888a03121561035757600080fd5b87356001600160a01b038116811461036e57600080fd5b9650602088013567ffffffffffffffff8082111561038b57600080fd5b818a0191508a601f83011261039f57600080fd5b8135818111156103ae57600080fd5b8b60208285010111156103c057600080fd5b6020830198508097505060408a01359150808211156103de57600080fd5b6103ea8b838c016102f0565b909650945060608a013591508082111561040357600080fd5b506104108a828b016102f0565b989b979a5095985093969295929350505056fea26469706673582212207e5e1287edc06ab08a7594afbc051dee662a5f5969372ab655cac10baa4d2fb264736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/abi/Summa.json b/backend/src/contracts/abi/Summa.json index 77d86b82..15a355ce 100644 --- a/backend/src/contracts/abi/Summa.json +++ b/backend/src/contracts/abi/Summa.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"address","name":"_verificationKey","type":"address"},{"internalType":"contract IVerifier","name":"_polynomialEncodingVerifier","type":"address"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"proof","type":"bytes"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"bytes","name":"proof","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verificationKey","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a06040523480156200001157600080fd5b5060405162001bcf38038062001bcf8339810160408190526200003491620001d7565b6200003f336200016e565b6001600160a01b0384166200009b5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420766572696679696e67206b6579206164647265737300000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03868116919091179091558316620001205760405162461bcd60e51b815260206004820152602c60248201527f496e76616c696420706f6c796e6f6d69616c20656e636f64696e67207665726960448201526b66696572206164647265737360a01b606482015260840162000092565b6001600160a01b039092166080526040805180820190915261ffff90911680825260ff9092166020909101819052600180546201000090920262ffffff19909216909217179055506200024a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620001d457600080fd5b50565b60008060008060808587031215620001ee57600080fd5b8451620001fb81620001be565b60208601519094506200020e81620001be565b604086015190935061ffff811681146200022757600080fd5b606086015190925060ff811681146200023f57600080fd5b939692955090935050565b6080516119696200026660003960006105e701526119696000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637ddc907d116100665780637ddc907d1461013e5780638da5cb5b14610169578063a3c4bcf81461017a578063c7ddca0e1461019d578063f2fde38b146101b057600080fd5b806319b33968146100a357806343f9ec07146100cc57806349ce8997146100e1578063715018a61461010157806379502c5514610109575b600080fd5b6100b66100b13660046110b3565b6101c3565b6040516100c39190611187565b60405180910390f35b6100df6100da3660046112c8565b6104db565b005b6100f46100ef3660046110b3565b610920565b6040516100c39190611403565b6100df6109be565b6001546101229061ffff81169062010000900460ff1682565b6040805161ffff909316835260ff9091166020830152016100c3565b600254610151906001600160a01b031681565b6040516001600160a01b0390911681526020016100c3565b6000546001600160a01b0316610151565b61018d6101883660046110b3565b6109d2565b6040516100c39493929190611416565b6100df6101ab36600461146e565b610c32565b6100df6101be3660046115c8565b610ed3565b6101ee6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600560205260409020546102455760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b60008281526005602052604090205460039061026390600190611607565b8154811061027357610273611620565b906000526020600020906004020160405180608001604052908160008201805461029c90611636565b80601f01602080910402602001604051908101604052809291908181526020018280546102c890611636565b80156103155780601f106102ea57610100808354040283529160200191610315565b820191906000526020600020905b8154815290600101906020018083116102f857829003601f168201915b5050505050815260200160018201805461032e90611636565b80601f016020809104026020016040519081016040528092919081815260200182805461035a90611636565b80156103a75780601f1061037c576101008083540402835291602001916103a7565b820191906000526020600020905b81548152906001019060200180831161038a57829003601f168201915b505050505081526020016002820180546103c090611636565b80601f01602080910402602001604051908101604052809291908181526020018280546103ec90611636565b80156104395780601f1061040e57610100808354040283529160200191610439565b820191906000526020600020905b81548152906001019060200180831161041c57829003601f168201915b5050505050815260200160038201805461045290611636565b80601f016020809104026020016040519081016040528092919081815260200182805461047e90611636565b80156104cb5780601f106104a0576101008083540402835291602001916104cb565b820191906000526020600020905b8154815290600101906020018083116104ae57829003601f168201915b5050505050815250509050919050565b6104e3610f4c565b82516115001461052c5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015260640161023c565b600082511161058b5760405162461bcd60e51b815260206004820152602560248201527f43727970746f63757272656e63696573206c6973742063616e6e6f7420626520604482015264656d70747960d81b606482015260840161023c565b604080516001808252818301909252600091602080830190803683370190505090506001816000815181106105c2576105c2611620565b602090810291909101015260025460405163af83a18d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263af83a18d9261062492919091169088908690600401611670565b602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066591906116d6565b6106a15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161023c565b6000835167ffffffffffffffff8111156106bd576106bd6111a1565b6040519080825280602002602001820160405280156106f057816020015b60608152602001906001900390816106db5790505b5090506000845167ffffffffffffffff81111561070f5761070f6111a1565b60405190808252806020026020018201604052801561074257816020015b606081526020019060019003908161072d5790505b50905060005b855181101561086d5785818151811061076357610763611620565b6020026020010151602001515160001415801561079f575085818151811061078d5761078d611620565b60200260200101516000015151600014155b6107e45760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b604482015260640161023c565b8581815181106107f6576107f6611620565b60200260200101516000015183828151811061081457610814611620565b602002602001018190525085818151811061083157610831611620565b60200260200101516020015182828151811061084f5761084f611620565b60200260200101819052508080610865906116f8565b915050610748565b506040805160608101825287815260208082018590528183018490526000878152600490915291909120815181906108a59082611760565b5060208281015180516108be9260018501920190610ff6565b50604082015180516108da916002840191602090910190610ff6565b50905050837f2b16813e2ba6c759e7f19e9a8ae9f18dc303e5b86eebc77a8d5c869d75eafdd28787604051610910929190611820565b60405180910390a2505050505050565b60046020526000908152604090208054819061093b90611636565b80601f016020809104026020016040519081016040528092919081815260200182805461096790611636565b80156109b45780601f10610989576101008083540402835291602001916109b4565b820191906000526020600020905b81548152906001019060200180831161099757829003601f168201915b5050505050905081565b6109c6610f4c565b6109d06000610fa6565b565b600381815481106109e257600080fd5b9060005260206000209060040201600091509050806000018054610a0590611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3190611636565b8015610a7e5780601f10610a5357610100808354040283529160200191610a7e565b820191906000526020600020905b815481529060010190602001808311610a6157829003601f168201915b505050505090806001018054610a9390611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90611636565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b505050505090806002018054610b2190611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4d90611636565b8015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b505050505090806003018054610baf90611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb90611636565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505050905084565b610c3a610f4c565b60005b8151811015610e98576000828281518110610c5a57610c5a611620565b602002602001015160000151604051602001610c7691906118b5565b60408051601f198184030181529181528151602092830120600081815260059093529120549091508015610cec5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161023c565b6003848481518110610d0057610d00611620565b60209081029190910181015182546001810184556000938452919092208251600490920201908190610d329082611760565b5060208201516001820190610d479082611760565b5060408201516002820190610d5c9082611760565b5060608201516003820190610d719082611760565b5050600354600084815260056020526040902055508351849084908110610d9a57610d9a611620565b60200260200101516000015151600014158015610dd65750838381518110610dc457610dc4611620565b60200260200101516020015151600014155b8015610e015750838381518110610def57610def611620565b60200260200101516040015151600014155b8015610e2c5750838381518110610e1a57610e1a611620565b60200260200101516060015151600014155b610e835760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161023c565b50508080610e90906116f8565b915050610c3d565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610ec891906118d1565b60405180910390a150565b610edb610f4c565b6001600160a01b038116610f405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023c565b610f4981610fa6565b50565b6000546001600160a01b031633146109d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161023c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561103c579160200282015b8281111561103c578251829061102c9082611760565b5091602001919060010190611016565b5061104892915061104c565b5090565b808211156110485760006110608282611069565b5060010161104c565b50805461107590611636565b6000825580601f10611085575050565b601f016020900490600052602060002090810190610f4991905b80821115611048576000815560010161109f565b6000602082840312156110c557600080fd5b5035919050565b60005b838110156110e75781810151838201526020016110cf565b50506000910152565b600081518084526111088160208601602086016110cc565b601f01601f19169290920160200192915050565b600081516080845261113160808501826110f0565b90506020830151848203602086015261114a82826110f0565b9150506040830151848203604086015261116482826110f0565b9150506060830151848203606086015261117e82826110f0565b95945050505050565b60208152600061119a602083018461111c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156111da576111da6111a1565b60405290565b6040516080810167ffffffffffffffff811182821017156111da576111da6111a1565b604051601f8201601f1916810167ffffffffffffffff8111828210171561122c5761122c6111a1565b604052919050565b600082601f83011261124557600080fd5b813567ffffffffffffffff81111561125f5761125f6111a1565b611272601f8201601f1916602001611203565b81815284602083860101111561128757600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff8211156112be576112be6111a1565b5060051b60200190565b6000806000606084860312156112dd57600080fd5b833567ffffffffffffffff808211156112f557600080fd5b61130187838801611234565b945060209150818601358181111561131857600080fd5b8601601f8101881361132957600080fd5b803561133c611337826112a4565b611203565b81815260059190911b8201840190848101908a83111561135b57600080fd5b8584015b838110156113ec5780358681111561137657600080fd5b85016040818e03601f1901121561138d5760008081fd5b6113956111b7565b88820135888111156113a75760008081fd5b6113b58f8b83860101611234565b8252506040820135888111156113cb5760008081fd5b6113d98f8b83860101611234565b828b01525084525091860191860161135f565b50979a979950505050604095909501359450505050565b60208152600061119a60208301846110f0565b60808152600061142960808301876110f0565b828103602084015261143b81876110f0565b9050828103604084015261144f81866110f0565b9050828103606084015261146381856110f0565b979650505050505050565b6000602080838503121561148157600080fd5b823567ffffffffffffffff8082111561149957600080fd5b818501915085601f8301126114ad57600080fd5b81356114bb611337826112a4565b81815260059190911b830184019084810190888311156114da57600080fd5b8585015b838110156115bb578035858111156114f557600080fd5b86016080818c03601f1901121561150c5760008081fd5b6115146111e0565b88820135878111156115265760008081fd5b6115348d8b83860101611234565b8252506040808301358881111561154b5760008081fd5b6115598e8c83870101611234565b8b84015250606080840135898111156115725760008081fd5b6115808f8d83880101611234565b8385015250608084013591508882111561159a5760008081fd5b6115a88e8c84870101611234565b90830152508452509186019186016114de565b5098975050505050505050565b6000602082840312156115da57600080fd5b81356001600160a01b038116811461119a57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561161a5761161a6115f1565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061164a57607f821691505b60208210810361166a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038416815260606020808301829052600091611695908401866110f0565b838103604085015284518082528286019183019060005b818110156116c8578351835292840192918401916001016116ac565b509098975050505050505050565b6000602082840312156116e857600080fd5b8151801515811461119a57600080fd5b60006001820161170a5761170a6115f1565b5060010190565b601f82111561175b57600081815260208120601f850160051c810160208610156117385750805b601f850160051c820191505b8181101561175757828155600101611744565b5050505b505050565b815167ffffffffffffffff81111561177a5761177a6111a1565b61178e816117888454611636565b84611711565b602080601f8311600181146117c357600084156117ab5750858301515b600019600386901b1c1916600185901b178555611757565b600085815260208120601f198616915b828110156117f2578886015182559484019460019091019084016117d3565b50858210156118105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006040808352611833818401866110f0565b6020848203818601528186518084528284019150828160051b85010183890160005b838110156118a557868303601f19018552815180518985526118798a8601826110f0565b91880151858303868a015291905061189181836110f0565b968801969450505090850190600101611855565b50909a9950505050505050505050565b600082516118c78184602087016110cc565b9190910192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561192657603f1988860301845261191485835161111c565b945092850192908501906001016118f8565b509297965050505050505056fea26469706673582212200ed4ad21f905c376a3c27857f45ee78009a7f56fe814b973cbb8d8e3de91f77b64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80637ddc907d116100665780637ddc907d1461013e5780638da5cb5b14610169578063a3c4bcf81461017a578063c7ddca0e1461019d578063f2fde38b146101b057600080fd5b806319b33968146100a357806343f9ec07146100cc57806349ce8997146100e1578063715018a61461010157806379502c5514610109575b600080fd5b6100b66100b13660046110b3565b6101c3565b6040516100c39190611187565b60405180910390f35b6100df6100da3660046112c8565b6104db565b005b6100f46100ef3660046110b3565b610920565b6040516100c39190611403565b6100df6109be565b6001546101229061ffff81169062010000900460ff1682565b6040805161ffff909316835260ff9091166020830152016100c3565b600254610151906001600160a01b031681565b6040516001600160a01b0390911681526020016100c3565b6000546001600160a01b0316610151565b61018d6101883660046110b3565b6109d2565b6040516100c39493929190611416565b6100df6101ab36600461146e565b610c32565b6100df6101be3660046115c8565b610ed3565b6101ee6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600560205260409020546102455760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b60008281526005602052604090205460039061026390600190611607565b8154811061027357610273611620565b906000526020600020906004020160405180608001604052908160008201805461029c90611636565b80601f01602080910402602001604051908101604052809291908181526020018280546102c890611636565b80156103155780601f106102ea57610100808354040283529160200191610315565b820191906000526020600020905b8154815290600101906020018083116102f857829003601f168201915b5050505050815260200160018201805461032e90611636565b80601f016020809104026020016040519081016040528092919081815260200182805461035a90611636565b80156103a75780601f1061037c576101008083540402835291602001916103a7565b820191906000526020600020905b81548152906001019060200180831161038a57829003601f168201915b505050505081526020016002820180546103c090611636565b80601f01602080910402602001604051908101604052809291908181526020018280546103ec90611636565b80156104395780601f1061040e57610100808354040283529160200191610439565b820191906000526020600020905b81548152906001019060200180831161041c57829003601f168201915b5050505050815260200160038201805461045290611636565b80601f016020809104026020016040519081016040528092919081815260200182805461047e90611636565b80156104cb5780601f106104a0576101008083540402835291602001916104cb565b820191906000526020600020905b8154815290600101906020018083116104ae57829003601f168201915b5050505050815250509050919050565b6104e3610f4c565b82516115001461052c5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015260640161023c565b600082511161058b5760405162461bcd60e51b815260206004820152602560248201527f43727970746f63757272656e63696573206c6973742063616e6e6f7420626520604482015264656d70747960d81b606482015260840161023c565b604080516001808252818301909252600091602080830190803683370190505090506001816000815181106105c2576105c2611620565b602090810291909101015260025460405163af83a18d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263af83a18d9261062492919091169088908690600401611670565b602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066591906116d6565b6106a15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161023c565b6000835167ffffffffffffffff8111156106bd576106bd6111a1565b6040519080825280602002602001820160405280156106f057816020015b60608152602001906001900390816106db5790505b5090506000845167ffffffffffffffff81111561070f5761070f6111a1565b60405190808252806020026020018201604052801561074257816020015b606081526020019060019003908161072d5790505b50905060005b855181101561086d5785818151811061076357610763611620565b6020026020010151602001515160001415801561079f575085818151811061078d5761078d611620565b60200260200101516000015151600014155b6107e45760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b604482015260640161023c565b8581815181106107f6576107f6611620565b60200260200101516000015183828151811061081457610814611620565b602002602001018190525085818151811061083157610831611620565b60200260200101516020015182828151811061084f5761084f611620565b60200260200101819052508080610865906116f8565b915050610748565b506040805160608101825287815260208082018590528183018490526000878152600490915291909120815181906108a59082611760565b5060208281015180516108be9260018501920190610ff6565b50604082015180516108da916002840191602090910190610ff6565b50905050837f2b16813e2ba6c759e7f19e9a8ae9f18dc303e5b86eebc77a8d5c869d75eafdd28787604051610910929190611820565b60405180910390a2505050505050565b60046020526000908152604090208054819061093b90611636565b80601f016020809104026020016040519081016040528092919081815260200182805461096790611636565b80156109b45780601f10610989576101008083540402835291602001916109b4565b820191906000526020600020905b81548152906001019060200180831161099757829003601f168201915b5050505050905081565b6109c6610f4c565b6109d06000610fa6565b565b600381815481106109e257600080fd5b9060005260206000209060040201600091509050806000018054610a0590611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3190611636565b8015610a7e5780601f10610a5357610100808354040283529160200191610a7e565b820191906000526020600020905b815481529060010190602001808311610a6157829003601f168201915b505050505090806001018054610a9390611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90611636565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b505050505090806002018054610b2190611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4d90611636565b8015610b9a5780601f10610b6f57610100808354040283529160200191610b9a565b820191906000526020600020905b815481529060010190602001808311610b7d57829003601f168201915b505050505090806003018054610baf90611636565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdb90611636565b8015610c285780601f10610bfd57610100808354040283529160200191610c28565b820191906000526020600020905b815481529060010190602001808311610c0b57829003601f168201915b5050505050905084565b610c3a610f4c565b60005b8151811015610e98576000828281518110610c5a57610c5a611620565b602002602001015160000151604051602001610c7691906118b5565b60408051601f198184030181529181528151602092830120600081815260059093529120549091508015610cec5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161023c565b6003848481518110610d0057610d00611620565b60209081029190910181015182546001810184556000938452919092208251600490920201908190610d329082611760565b5060208201516001820190610d479082611760565b5060408201516002820190610d5c9082611760565b5060608201516003820190610d719082611760565b5050600354600084815260056020526040902055508351849084908110610d9a57610d9a611620565b60200260200101516000015151600014158015610dd65750838381518110610dc457610dc4611620565b60200260200101516020015151600014155b8015610e015750838381518110610def57610def611620565b60200260200101516040015151600014155b8015610e2c5750838381518110610e1a57610e1a611620565b60200260200101516060015151600014155b610e835760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161023c565b50508080610e90906116f8565b915050610c3d565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610ec891906118d1565b60405180910390a150565b610edb610f4c565b6001600160a01b038116610f405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023c565b610f4981610fa6565b50565b6000546001600160a01b031633146109d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161023c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561103c579160200282015b8281111561103c578251829061102c9082611760565b5091602001919060010190611016565b5061104892915061104c565b5090565b808211156110485760006110608282611069565b5060010161104c565b50805461107590611636565b6000825580601f10611085575050565b601f016020900490600052602060002090810190610f4991905b80821115611048576000815560010161109f565b6000602082840312156110c557600080fd5b5035919050565b60005b838110156110e75781810151838201526020016110cf565b50506000910152565b600081518084526111088160208601602086016110cc565b601f01601f19169290920160200192915050565b600081516080845261113160808501826110f0565b90506020830151848203602086015261114a82826110f0565b9150506040830151848203604086015261116482826110f0565b9150506060830151848203606086015261117e82826110f0565b95945050505050565b60208152600061119a602083018461111c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156111da576111da6111a1565b60405290565b6040516080810167ffffffffffffffff811182821017156111da576111da6111a1565b604051601f8201601f1916810167ffffffffffffffff8111828210171561122c5761122c6111a1565b604052919050565b600082601f83011261124557600080fd5b813567ffffffffffffffff81111561125f5761125f6111a1565b611272601f8201601f1916602001611203565b81815284602083860101111561128757600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff8211156112be576112be6111a1565b5060051b60200190565b6000806000606084860312156112dd57600080fd5b833567ffffffffffffffff808211156112f557600080fd5b61130187838801611234565b945060209150818601358181111561131857600080fd5b8601601f8101881361132957600080fd5b803561133c611337826112a4565b611203565b81815260059190911b8201840190848101908a83111561135b57600080fd5b8584015b838110156113ec5780358681111561137657600080fd5b85016040818e03601f1901121561138d5760008081fd5b6113956111b7565b88820135888111156113a75760008081fd5b6113b58f8b83860101611234565b8252506040820135888111156113cb5760008081fd5b6113d98f8b83860101611234565b828b01525084525091860191860161135f565b50979a979950505050604095909501359450505050565b60208152600061119a60208301846110f0565b60808152600061142960808301876110f0565b828103602084015261143b81876110f0565b9050828103604084015261144f81866110f0565b9050828103606084015261146381856110f0565b979650505050505050565b6000602080838503121561148157600080fd5b823567ffffffffffffffff8082111561149957600080fd5b818501915085601f8301126114ad57600080fd5b81356114bb611337826112a4565b81815260059190911b830184019084810190888311156114da57600080fd5b8585015b838110156115bb578035858111156114f557600080fd5b86016080818c03601f1901121561150c5760008081fd5b6115146111e0565b88820135878111156115265760008081fd5b6115348d8b83860101611234565b8252506040808301358881111561154b5760008081fd5b6115598e8c83870101611234565b8b84015250606080840135898111156115725760008081fd5b6115808f8d83880101611234565b8385015250608084013591508882111561159a5760008081fd5b6115a88e8c84870101611234565b90830152508452509186019186016114de565b5098975050505050505050565b6000602082840312156115da57600080fd5b81356001600160a01b038116811461119a57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561161a5761161a6115f1565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061164a57607f821691505b60208210810361166a57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038416815260606020808301829052600091611695908401866110f0565b838103604085015284518082528286019183019060005b818110156116c8578351835292840192918401916001016116ac565b509098975050505050505050565b6000602082840312156116e857600080fd5b8151801515811461119a57600080fd5b60006001820161170a5761170a6115f1565b5060010190565b601f82111561175b57600081815260208120601f850160051c810160208610156117385750805b601f850160051c820191505b8181101561175757828155600101611744565b5050505b505050565b815167ffffffffffffffff81111561177a5761177a6111a1565b61178e816117888454611636565b84611711565b602080601f8311600181146117c357600084156117ab5750858301515b600019600386901b1c1916600185901b178555611757565b600085815260208120601f198616915b828110156117f2578886015182559484019460019091019084016117d3565b50858210156118105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006040808352611833818401866110f0565b6020848203818601528186518084528284019150828160051b85010183890160005b838110156118a557868303601f19018552815180518985526118798a8601826110f0565b91880151858303868a015291905061189181836110f0565b968801969450505090850190600101611855565b50909a9950505050505050505050565b600082516118c78184602087016110cc565b9190910192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561192657603f1988860301845261191485835161111c565b945092850192908501906001016118f8565b509297965050505050505056fea26469706673582212200ed4ad21f905c376a3c27857f45ee78009a7f56fe814b973cbb8d8e3de91f77b64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"address","name":"_verifyingKey","type":"address"},{"internalType":"contract IVerifier","name":"_polynomialEncodingVerifier","type":"address"},{"internalType":"contract IVerifier","name":"_grandSumVerifier","type":"address"},{"internalType":"contract IInclusionVerifier","name":"_inclusionVerifier","type":"address"},{"internalType":"string[]","name":"cryptocurrencyNames","type":"string[]"},{"internalType":"string[]","name":"cryptocurrencyChains","type":"string[]"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"totalBalances","type":"uint256[]"},{"indexed":false,"internalType":"bytes","name":"snarkProof","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"grandSumProof","type":"bytes"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"snarkProof","type":"bytes"},{"internalType":"bytes","name":"grandSumProof","type":"bytes"},{"internalType":"uint256[]","name":"totalBalances","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"inclusionProof","type":"bytes"},{"internalType":"uint256[]","name":"challenges","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifyingKey","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"bytecode":"0x6101006040523480156200001257600080fd5b50604051620028f0380380620028f083398101604081905262000035916200074b565b620000403362000425565b6001600160a01b0387166200009c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420766572696679696e67206b6579206164647265737300000060448201526064015b60405180910390fd5b6001600160a01b0387166080528151835114620001145760405162461bcd60e51b815260206004820152602f60248201527f43727970746f63757272656e6379206e616d657320616e6420636861696e732060448201526e0dceadac4cae440dad2e6dac2e8c6d608b1b606482015260840162000093565b60005b8351811015620001d15783818151811062000136576200013662000827565b6020026020010151516000141580156200016e575082818151811062000160576200016062000827565b602002602001015151600014155b620001bc5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642063727970746f63757272656e637900000000000000000000604482015260640162000093565b80620001c88162000853565b91505062000117565b50620001e6878451836200047560201b60201c565b6200025a5760405162461bcd60e51b815260206004820152603c60248201527f54686520636f6e66696720706172616d657465727320646f206e6f7420636f7260448201527f726573706f6e6420746f2074686520766572696679696e67206b657900000000606482015260840162000093565b6001600160a01b038616620002c75760405162461bcd60e51b815260206004820152602c60248201527f496e76616c696420706f6c796e6f6d69616c20656e636f64696e67207665726960448201526b66696572206164647265737360a01b606482015260840162000093565b6001600160a01b0380871660a0528516620003305760405162461bcd60e51b815260206004820152602260248201527f496e76616c6964206772616e642073756d207665726966696572206164647265604482015261737360f01b606482015260840162000093565b6001600160a01b0380861660c0528416620003995760405162461bcd60e51b815260206004820152602260248201527f496e76616c696420696e636c7573696f6e207665726966696572206164647265604482015261737360f01b606482015260840162000093565b6001600160a01b03841660e05260408051606081018252848152602080820185905260ff84169282019290925284519091600191620003de91839190880190620004f7565b506020828101518051620003f99260018501920190620004f7565b50604091909101516002909101805460ff191660ff9092169190911790555062000a4795505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083620004866002856200086f565b60ff16620004959190620008a0565b620004a2906002620008c0565b90506102e06000620004b6836040620008a0565b620004c29083620008c0565b90506000620004d3601083620008d6565b9050600060208260008b3c5050600051600f81161590151916979650505050505050565b82805482825590600052602060002090810192821562000542579160200282015b828111156200054257825182906200053190826200097b565b509160200191906001019062000518565b506200055092915062000554565b5090565b80821115620005505760006200056b828262000575565b5060010162000554565b5080546200058390620008ec565b6000825580601f1062000594575050565b601f016020900490600052602060002090810190620005b49190620005b7565b50565b5b80821115620005505760008155600101620005b8565b6001600160a01b0381168114620005b457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620006255762000625620005e4565b604052919050565b6000601f83818401126200064057600080fd5b825160206001600160401b03808311156200065f576200065f620005e4565b8260051b62000670838201620005fa565b93845286810183019383810190898611156200068b57600080fd5b84890192505b858310156200073e57825184811115620006ab5760008081fd5b8901603f81018b13620006be5760008081fd5b8581015185811115620006d557620006d5620005e4565b620006e8818a01601f19168801620005fa565b81815260408d81848601011115620007005760008081fd5b60005b8381101562000720578481018201518382018b0152890162000703565b50506000918101880191909152835250918401919084019062000691565b9998505050505050505050565b600080600080600080600060e0888a0312156200076757600080fd5b87516200077481620005ce565b60208901519097506200078781620005ce565b60408901519096506200079a81620005ce565b6060890151909550620007ad81620005ce565b60808901519094506001600160401b0380821115620007cb57600080fd5b620007d98b838c016200062d565b945060a08a0151915080821115620007f057600080fd5b50620007ff8a828b016200062d565b92505060c088015160ff811681146200081757600080fd5b8091505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200086857620008686200083d565b5060010190565b600060ff8316806200089157634e487b7160e01b600052601260045260246000fd5b8060ff84160491505092915050565b8082028115828204841417620008ba57620008ba6200083d565b92915050565b80820180821115620008ba57620008ba6200083d565b81810381811115620008ba57620008ba6200083d565b600181811c908216806200090157607f821691505b6020821081036200092257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200097657600081815260208120601f850160051c81016020861015620009515750805b601f850160051c820191505b8181101562000972578281556001016200095d565b5050505b505050565b81516001600160401b03811115620009975762000997620005e4565b620009af81620009a88454620008ec565b8462000928565b602080601f831160018114620009e75760008415620009ce5750858301515b600019600386901b1c1916600185901b17855562000972565b600085815260208120601f198616915b8281101562000a1857888601518255948401946001909101908401620009f7565b508582101562000a375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051611e5a62000a966000396000610cb801526000610514015260006103500152600081816101380152818161037d015281816105410152610ce50152611e5a6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637950c5f8116100715780637950c5f8146101335780638da5cb5b146101725780639c38255914610183578063a3c4bcf8146101a6578063c7ddca0e146101c9578063f2fde38b146101dc57600080fd5b806305ab9860146100ae57806319b33968146100c357806349ce8997146100ec578063715018a61461010c57806379502c5514610114575b600080fd5b6100c16100bc3660046114cb565b6101ef565b005b6100d66100d1366004611567565b610660565b6040516100e3919061163b565b60405180910390f35b6100ff6100fa366004611567565b610973565b6040516100e39190611655565b6100c1610a0d565b6003546101219060ff1681565b60405160ff90911681526020016100e3565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e3565b6000546001600160a01b031661015a565b6101966101913660046116d8565b610a21565b60405190151581526020016100e3565b6101b96101b4366004611567565b610d5f565b6040516100e3949392919061176a565b6100c16101d73660046117b7565b610fbf565b6100c16101ea366004611911565b611260565b6101f76112d9565b600082511161024d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f74616c2062616c616e636573206c656e67746800000060448201526064015b60405180910390fd5b815161025a906040611950565b83146102a85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206772616e642073756d2070726f6f66206c656e67746800006044820152606401610244565b8285116102f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736e61726b2070726f6f66206c656e6774680000000000006044820152606401610244565b6040805160018082528183019092526000916020808301908036833701905050905060018160008151811061032e5761032e61196d565b602090810291909101015260405163af83a18d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d906103ab907f0000000000000000000000000000000000000000000000000000000000000000908b908b9087906004016119e7565b602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190611a1e565b61042e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039b730b93590383937b7b360691b6044820152606401610244565b6001548351146104a65760405162461bcd60e51b815260206004820152603a60248201527f4c696162696c69747920636f6d6d69746d656e747320616e642063727970746f60448201527f63757272656e63696573206e756d626572206d69736d617463680000000000006064820152608401610244565b3660008881896104b7896040611a40565b926104c493929190611a53565b9092509050600087876104da8460408188611a53565b6040516020016104ed9493929190611a7d565b60408051601f198184030181529082905263af83a18d60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d9061056d907f00000000000000000000000000000000000000000000000000000000000000009085908b90600401611a9f565b602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190611a1e565b6105fa5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206772616e642073756d2070726f6f660000000000000000006044820152606401610244565b6000858152600560205260409020610613838583611b68565b50847f7603a12a8838a565715ddb5bbf625b3f00a5e6f4793437537963e30c3b9495dc8785858c8c60405161064c959493929190611c29565b60405180910390a250505050505050505050565b61068b6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600660205260409020546106dd5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606401610244565b6000828152600660205260409020546004906106fb90600190611c70565b8154811061070b5761070b61196d565b906000526020600020906004020160405180608001604052908160008201805461073490611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461076090611adf565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b505050505081526020016001820180546107c690611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611adf565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805461085890611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461088490611adf565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081526020016003820180546108ea90611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461091690611adf565b80156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b5050505050815250509050919050565b6005602052600090815260409020805461098c90611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546109b890611adf565b8015610a055780601f106109da57610100808354040283529160200191610a05565b820191906000526020600020905b8154815290600101906020018083116109e857829003601f168201915b505050505081565b610a156112d9565b610a1f6000611333565b565b60008251600414610a745760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206368616c6c656e676573206c656e677468000000000000006044820152606401610244565b6001805483519091610a8591611c70565b14610add5760405162461bcd60e51b815260206004820152602260248201527f56616c756573206c656e677468206d69736d61746368207769746820636f6e66604482015261696760f01b6064820152608401610244565b60008581526005602052604081208054610af690611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611adf565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050509050600085518251610b869190611a40565b67ffffffffffffffff811115610b9e57610b9e6113cc565b6040519080825280601f01601f191660200182016040528015610bc8576020820181803683370190505b50905060005b8651811015610c2f57868181518110610be957610be961196d565b602001015160f81c60f81b828281518110610c0657610c0661196d565b60200101906001600160f81b031916908160001a90535080610c2781611c83565b915050610bce565b5060005b8251811015610ca057828181518110610c4e57610c4e61196d565b602001015160f81c60f81b82885183610c679190611a40565b81518110610c7757610c7761196d565b60200101906001600160f81b031916908160001a90535080610c9881611c83565b915050610c33565b506040516323fb5ad560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906347f6b5aa90610d13907f00000000000000000000000000000000000000000000000000000000000000009085908a908a90600401611c9c565b602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190611a1e565b979650505050505050565b60048181548110610d6f57600080fd5b9060005260206000209060040201600091509050806000018054610d9290611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe90611adf565b8015610e0b5780601f10610de057610100808354040283529160200191610e0b565b820191906000526020600020905b815481529060010190602001808311610dee57829003601f168201915b505050505090806001018054610e2090611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c90611adf565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b505050505090806002018054610eae90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90611adf565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b505050505090806003018054610f3c90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890611adf565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905084565b610fc76112d9565b60005b8151811015611225576000828281518110610fe757610fe761196d565b6020026020010151600001516040516020016110039190611ce6565b60408051601f1981840301815291815281516020928301206000818152600690935291205490915080156110795760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610244565b600484848151811061108d5761108d61196d565b602090810291909101810151825460018101845560009384529190922082516004909202019081906110bf9082611d02565b50602082015160018201906110d49082611d02565b50604082015160028201906110e99082611d02565b50606082015160038201906110fe9082611d02565b50506004546000848152600660205260409020555083518490849081106111275761112761196d565b6020026020010151600001515160001415801561116357508383815181106111515761115161196d565b60200260200101516020015151600014155b801561118e575083838151811061117c5761117c61196d565b60200260200101516040015151600014155b80156111b957508383815181106111a7576111a761196d565b60200260200101516060015151600014155b6112105760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610244565b5050808061121d90611c83565b915050610fca565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516112559190611dc2565b60405180910390a150565b6112686112d9565b6001600160a01b0381166112cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610244565b6112d681611333565b50565b6000546001600160a01b03163314610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610244565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261139557600080fd5b50813567ffffffffffffffff8111156113ad57600080fd5b6020830191508360208285010111156113c557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611405576114056113cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611434576114346113cc565b604052919050565b600067ffffffffffffffff821115611456576114566113cc565b5060051b60200190565b600082601f83011261147157600080fd5b813560206114866114818361143c565b61140b565b82815260059290921b840181019181810190868411156114a557600080fd5b8286015b848110156114c057803583529183019183016114a9565b509695505050505050565b600080600080600080608087890312156114e457600080fd5b863567ffffffffffffffff808211156114fc57600080fd5b6115088a838b01611383565b9098509650602089013591508082111561152157600080fd5b61152d8a838b01611383565b9096509450604089013591508082111561154657600080fd5b5061155389828a01611460565b925050606087013590509295509295509295565b60006020828403121561157957600080fd5b5035919050565b60005b8381101561159b578181015183820152602001611583565b50506000910152565b600081518084526115bc816020860160208601611580565b601f01601f19169290920160200192915050565b60008151608084526115e560808501826115a4565b9050602083015184820360208601526115fe82826115a4565b9150506040830151848203604086015261161882826115a4565b9150506060830151848203606086015261163282826115a4565b95945050505050565b60208152600061164e60208301846115d0565b9392505050565b60208152600061164e60208301846115a4565b600082601f83011261167957600080fd5b813567ffffffffffffffff811115611693576116936113cc565b6116a6601f8201601f191660200161140b565b8181528460208386010111156116bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156116ee57600080fd5b84359350602085013567ffffffffffffffff8082111561170d57600080fd5b61171988838901611668565b9450604087013591508082111561172f57600080fd5b61173b88838901611460565b9350606087013591508082111561175157600080fd5b5061175e87828801611460565b91505092959194509250565b60808152600061177d60808301876115a4565b828103602084015261178f81876115a4565b905082810360408401526117a381866115a4565b90508281036060840152610d5481856115a4565b600060208083850312156117ca57600080fd5b823567ffffffffffffffff808211156117e257600080fd5b818501915085601f8301126117f657600080fd5b81356118046114818261143c565b81815260059190911b8301840190848101908883111561182357600080fd5b8585015b838110156119045780358581111561183e57600080fd5b86016080818c03601f190112156118555760008081fd5b61185d6113e2565b888201358781111561186f5760008081fd5b61187d8d8b83860101611668565b825250604080830135888111156118945760008081fd5b6118a28e8c83870101611668565b8b84015250606080840135898111156118bb5760008081fd5b6118c98f8d83880101611668565b838501525060808401359150888211156118e35760008081fd5b6118f18e8c84870101611668565b9083015250845250918601918601611827565b5098975050505050505050565b60006020828403121561192357600080fd5b81356001600160a01b038116811461164e57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176119675761196761193a565b92915050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b838110156119dc578151875295820195908201906001016119c0565b509495945050505050565b6001600160a01b0385168152606060208201819052600090611a0c9083018587611983565b8281036040840152610d5481856119ac565b600060208284031215611a3057600080fd5b8151801515811461164e57600080fd5b808201808211156119675761196761193a565b60008085851115611a6357600080fd5b83861115611a7057600080fd5b5050820193919092039150565b8385823760008482016000815283858237600093019283525090949350505050565b6001600160a01b0384168152606060208201819052600090611ac3908301856115a4565b8281036040840152611ad581856119ac565b9695505050505050565b600181811c90821680611af357607f821691505b602082108103611b1357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611b6357600081815260208120601f850160051c81016020861015611b405750805b601f850160051c820191505b81811015611b5f57828155600101611b4c565b5050505b505050565b67ffffffffffffffff831115611b8057611b806113cc565b611b9483611b8e8354611adf565b83611b19565b6000601f841160018114611bc85760008515611bb05750838201355b600019600387901b1c1916600186901b178355611c22565b600083815260209020601f19861690835b82811015611bf95786850135825560209485019460019092019101611bd9565b5086821015611c165760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b606081526000611c3c60608301886119ac565b8281036020840152611c4f818789611983565b90508281036040840152611c64818587611983565b98975050505050505050565b818103818111156119675761196761193a565b600060018201611c9557611c9561193a565b5060010190565b6001600160a01b0385168152608060208201819052600090611cc0908301866115a4565b8281036040840152611cd281866119ac565b90508281036060840152610d5481856119ac565b60008251611cf8818460208701611580565b9190910192915050565b815167ffffffffffffffff811115611d1c57611d1c6113cc565b611d3081611d2a8454611adf565b84611b19565b602080601f831160018114611d655760008415611d4d5750858301515b600019600386901b1c1916600185901b178555611b5f565b600085815260208120601f198616915b82811015611d9457888601518255948401946001909101908401611d75565b5085821015611db25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e1757603f19888603018452611e058583516115d0565b94509285019290850190600101611de9565b509297965050505050505056fea264697066735822122086b05c81b0f60b1a31ee68c4dd52ab17db71abf49d4386d873f88ee7e492e86a64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80637950c5f8116100715780637950c5f8146101335780638da5cb5b146101725780639c38255914610183578063a3c4bcf8146101a6578063c7ddca0e146101c9578063f2fde38b146101dc57600080fd5b806305ab9860146100ae57806319b33968146100c357806349ce8997146100ec578063715018a61461010c57806379502c5514610114575b600080fd5b6100c16100bc3660046114cb565b6101ef565b005b6100d66100d1366004611567565b610660565b6040516100e3919061163b565b60405180910390f35b6100ff6100fa366004611567565b610973565b6040516100e39190611655565b6100c1610a0d565b6003546101219060ff1681565b60405160ff90911681526020016100e3565b61015a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100e3565b6000546001600160a01b031661015a565b6101966101913660046116d8565b610a21565b60405190151581526020016100e3565b6101b96101b4366004611567565b610d5f565b6040516100e3949392919061176a565b6100c16101d73660046117b7565b610fbf565b6100c16101ea366004611911565b611260565b6101f76112d9565b600082511161024d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420746f74616c2062616c616e636573206c656e67746800000060448201526064015b60405180910390fd5b815161025a906040611950565b83146102a85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206772616e642073756d2070726f6f66206c656e67746800006044820152606401610244565b8285116102f75760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736e61726b2070726f6f66206c656e6774680000000000006044820152606401610244565b6040805160018082528183019092526000916020808301908036833701905050905060018160008151811061032e5761032e61196d565b602090810291909101015260405163af83a18d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d906103ab907f0000000000000000000000000000000000000000000000000000000000000000908b908b9087906004016119e7565b602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190611a1e565b61042e5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b21039b730b93590383937b7b360691b6044820152606401610244565b6001548351146104a65760405162461bcd60e51b815260206004820152603a60248201527f4c696162696c69747920636f6d6d69746d656e747320616e642063727970746f60448201527f63757272656e63696573206e756d626572206d69736d617463680000000000006064820152608401610244565b3660008881896104b7896040611a40565b926104c493929190611a53565b9092509050600087876104da8460408188611a53565b6040516020016104ed9493929190611a7d565b60408051601f198184030181529082905263af83a18d60e01b825291506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063af83a18d9061056d907f00000000000000000000000000000000000000000000000000000000000000009085908b90600401611a9f565b602060405180830381865afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190611a1e565b6105fa5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206772616e642073756d2070726f6f660000000000000000006044820152606401610244565b6000858152600560205260409020610613838583611b68565b50847f7603a12a8838a565715ddb5bbf625b3f00a5e6f4793437537963e30c3b9495dc8785858c8c60405161064c959493929190611c29565b60405180910390a250505050505050505050565b61068b6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600660205260409020546106dd5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b6044820152606401610244565b6000828152600660205260409020546004906106fb90600190611c70565b8154811061070b5761070b61196d565b906000526020600020906004020160405180608001604052908160008201805461073490611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461076090611adf565b80156107ad5780601f10610782576101008083540402835291602001916107ad565b820191906000526020600020905b81548152906001019060200180831161079057829003601f168201915b505050505081526020016001820180546107c690611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546107f290611adf565b801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b5050505050815260200160028201805461085890611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461088490611adf565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081526020016003820180546108ea90611adf565b80601f016020809104026020016040519081016040528092919081815260200182805461091690611adf565b80156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b5050505050815250509050919050565b6005602052600090815260409020805461098c90611adf565b80601f01602080910402602001604051908101604052809291908181526020018280546109b890611adf565b8015610a055780601f106109da57610100808354040283529160200191610a05565b820191906000526020600020905b8154815290600101906020018083116109e857829003601f168201915b505050505081565b610a156112d9565b610a1f6000611333565b565b60008251600414610a745760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206368616c6c656e676573206c656e677468000000000000006044820152606401610244565b6001805483519091610a8591611c70565b14610add5760405162461bcd60e51b815260206004820152602260248201527f56616c756573206c656e677468206d69736d61746368207769746820636f6e66604482015261696760f01b6064820152608401610244565b60008581526005602052604081208054610af690611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2290611adf565b8015610b6f5780601f10610b4457610100808354040283529160200191610b6f565b820191906000526020600020905b815481529060010190602001808311610b5257829003601f168201915b50505050509050600085518251610b869190611a40565b67ffffffffffffffff811115610b9e57610b9e6113cc565b6040519080825280601f01601f191660200182016040528015610bc8576020820181803683370190505b50905060005b8651811015610c2f57868181518110610be957610be961196d565b602001015160f81c60f81b828281518110610c0657610c0661196d565b60200101906001600160f81b031916908160001a90535080610c2781611c83565b915050610bce565b5060005b8251811015610ca057828181518110610c4e57610c4e61196d565b602001015160f81c60f81b82885183610c679190611a40565b81518110610c7757610c7761196d565b60200101906001600160f81b031916908160001a90535080610c9881611c83565b915050610c33565b506040516323fb5ad560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906347f6b5aa90610d13907f00000000000000000000000000000000000000000000000000000000000000009085908a908a90600401611c9c565b602060405180830381865afa158015610d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d549190611a1e565b979650505050505050565b60048181548110610d6f57600080fd5b9060005260206000209060040201600091509050806000018054610d9290611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe90611adf565b8015610e0b5780601f10610de057610100808354040283529160200191610e0b565b820191906000526020600020905b815481529060010190602001808311610dee57829003601f168201915b505050505090806001018054610e2090611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4c90611adf565b8015610e995780601f10610e6e57610100808354040283529160200191610e99565b820191906000526020600020905b815481529060010190602001808311610e7c57829003601f168201915b505050505090806002018054610eae90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610eda90611adf565b8015610f275780601f10610efc57610100808354040283529160200191610f27565b820191906000526020600020905b815481529060010190602001808311610f0a57829003601f168201915b505050505090806003018054610f3c90611adf565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6890611adf565b8015610fb55780601f10610f8a57610100808354040283529160200191610fb5565b820191906000526020600020905b815481529060010190602001808311610f9857829003601f168201915b5050505050905084565b610fc76112d9565b60005b8151811015611225576000828281518110610fe757610fe761196d565b6020026020010151600001516040516020016110039190611ce6565b60408051601f1981840301815291815281516020928301206000818152600690935291205490915080156110795760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610244565b600484848151811061108d5761108d61196d565b602090810291909101810151825460018101845560009384529190922082516004909202019081906110bf9082611d02565b50602082015160018201906110d49082611d02565b50604082015160028201906110e99082611d02565b50606082015160038201906110fe9082611d02565b50506004546000848152600660205260409020555083518490849081106111275761112761196d565b6020026020010151600001515160001415801561116357508383815181106111515761115161196d565b60200260200101516020015151600014155b801561118e575083838151811061117c5761117c61196d565b60200260200101516040015151600014155b80156111b957508383815181106111a7576111a761196d565b60200260200101516060015151600014155b6112105760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610244565b5050808061121d90611c83565b915050610fca565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516112559190611dc2565b60405180910390a150565b6112686112d9565b6001600160a01b0381166112cd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610244565b6112d681611333565b50565b6000546001600160a01b03163314610a1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610244565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261139557600080fd5b50813567ffffffffffffffff8111156113ad57600080fd5b6020830191508360208285010111156113c557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715611405576114056113cc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611434576114346113cc565b604052919050565b600067ffffffffffffffff821115611456576114566113cc565b5060051b60200190565b600082601f83011261147157600080fd5b813560206114866114818361143c565b61140b565b82815260059290921b840181019181810190868411156114a557600080fd5b8286015b848110156114c057803583529183019183016114a9565b509695505050505050565b600080600080600080608087890312156114e457600080fd5b863567ffffffffffffffff808211156114fc57600080fd5b6115088a838b01611383565b9098509650602089013591508082111561152157600080fd5b61152d8a838b01611383565b9096509450604089013591508082111561154657600080fd5b5061155389828a01611460565b925050606087013590509295509295509295565b60006020828403121561157957600080fd5b5035919050565b60005b8381101561159b578181015183820152602001611583565b50506000910152565b600081518084526115bc816020860160208601611580565b601f01601f19169290920160200192915050565b60008151608084526115e560808501826115a4565b9050602083015184820360208601526115fe82826115a4565b9150506040830151848203604086015261161882826115a4565b9150506060830151848203606086015261163282826115a4565b95945050505050565b60208152600061164e60208301846115d0565b9392505050565b60208152600061164e60208301846115a4565b600082601f83011261167957600080fd5b813567ffffffffffffffff811115611693576116936113cc565b6116a6601f8201601f191660200161140b565b8181528460208386010111156116bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156116ee57600080fd5b84359350602085013567ffffffffffffffff8082111561170d57600080fd5b61171988838901611668565b9450604087013591508082111561172f57600080fd5b61173b88838901611460565b9350606087013591508082111561175157600080fd5b5061175e87828801611460565b91505092959194509250565b60808152600061177d60808301876115a4565b828103602084015261178f81876115a4565b905082810360408401526117a381866115a4565b90508281036060840152610d5481856115a4565b600060208083850312156117ca57600080fd5b823567ffffffffffffffff808211156117e257600080fd5b818501915085601f8301126117f657600080fd5b81356118046114818261143c565b81815260059190911b8301840190848101908883111561182357600080fd5b8585015b838110156119045780358581111561183e57600080fd5b86016080818c03601f190112156118555760008081fd5b61185d6113e2565b888201358781111561186f5760008081fd5b61187d8d8b83860101611668565b825250604080830135888111156118945760008081fd5b6118a28e8c83870101611668565b8b84015250606080840135898111156118bb5760008081fd5b6118c98f8d83880101611668565b838501525060808401359150888211156118e35760008081fd5b6118f18e8c84870101611668565b9083015250845250918601918601611827565b5098975050505050505050565b60006020828403121561192357600080fd5b81356001600160a01b038116811461164e57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176119675761196761193a565b92915050565b634e487b7160e01b600052603260045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b838110156119dc578151875295820195908201906001016119c0565b509495945050505050565b6001600160a01b0385168152606060208201819052600090611a0c9083018587611983565b8281036040840152610d5481856119ac565b600060208284031215611a3057600080fd5b8151801515811461164e57600080fd5b808201808211156119675761196761193a565b60008085851115611a6357600080fd5b83861115611a7057600080fd5b5050820193919092039150565b8385823760008482016000815283858237600093019283525090949350505050565b6001600160a01b0384168152606060208201819052600090611ac3908301856115a4565b8281036040840152611ad581856119ac565b9695505050505050565b600181811c90821680611af357607f821691505b602082108103611b1357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611b6357600081815260208120601f850160051c81016020861015611b405750805b601f850160051c820191505b81811015611b5f57828155600101611b4c565b5050505b505050565b67ffffffffffffffff831115611b8057611b806113cc565b611b9483611b8e8354611adf565b83611b19565b6000601f841160018114611bc85760008515611bb05750838201355b600019600387901b1c1916600186901b178355611c22565b600083815260209020601f19861690835b82811015611bf95786850135825560209485019460019092019101611bd9565b5086821015611c165760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b606081526000611c3c60608301886119ac565b8281036020840152611c4f818789611983565b90508281036040840152611c64818587611983565b98975050505050505050565b818103818111156119675761196761193a565b600060018201611c9557611c9561193a565b5060010190565b6001600160a01b0385168152608060208201819052600090611cc0908301866115a4565b8281036040840152611cd281866119ac565b90508281036060840152610d5481856119ac565b60008251611cf8818460208701611580565b9190910192915050565b815167ffffffffffffffff811115611d1c57611d1c6113cc565b611d3081611d2a8454611adf565b84611b19565b602080601f831160018114611d655760008415611d4d5750858301515b600019600386901b1c1916600185901b178555611b5f565b600085815260208120601f198616915b82811015611d9457888601518255948401946001909101908401611d75565b5085821015611db25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611e1757603f19888603018452611e058583516115d0565b94509285019290850190600101611de9565b509297965050505050505056fea264697066735822122086b05c81b0f60b1a31ee68c4dd52ab17db71abf49d4386d873f88ee7e492e86a64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/deployments.json b/backend/src/contracts/deployments.json index 303b1de3..81e8bab9 100644 --- a/backend/src/contracts/deployments.json +++ b/backend/src/contracts/deployments.json @@ -1 +1 @@ -{"31337":{"address":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512"}} +{"31337":{"address":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"}} \ No newline at end of file diff --git a/backend/src/contracts/generated/grandsum_verifier.rs b/backend/src/contracts/generated/grandsum_verifier.rs new file mode 100644 index 00000000..59faa68d --- /dev/null +++ b/backend/src/contracts/generated/grandsum_verifier.rs @@ -0,0 +1,2744 @@ +pub use grand_sum_verifier::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod grand_sum_verifier { + #[rustfmt::skip] + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + ///The parsed JSON ABI of the contract. + pub static GRANDSUMVERIFIER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); + #[rustfmt::skip] + const __BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 4, + 254, + 128, + 97, + 0, + 32, + 96, + 0, + 57, + 96, + 0, + 243, + 254, + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 43, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 175, + 131, + 161, + 141, + 20, + 97, + 0, + 48, + 87, + 91, + 96, + 0, + 128, + 253, + 91, + 97, + 0, + 67, + 97, + 0, + 62, + 54, + 96, + 4, + 97, + 4, + 11, + 86, + 91, + 97, + 0, + 87, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 243, + 91, + 96, + 0, + 97, + 1, + 53, + 86, + 91, + 96, + 32, + 130, + 1, + 53, + 131, + 129, + 16, + 131, + 53, + 133, + 129, + 16, + 132, + 22, + 145, + 144, + 145, + 22, + 145, + 133, + 96, + 3, + 129, + 128, + 133, + 128, + 9, + 133, + 9, + 8, + 134, + 130, + 131, + 9, + 20, + 131, + 22, + 146, + 80, + 80, + 80, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 130, + 96, + 224, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 128, + 96, + 128, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 96, + 96, + 96, + 128, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 0, + 82, + 130, + 96, + 32, + 82, + 97, + 2, + 192, + 81, + 96, + 64, + 82, + 97, + 2, + 224, + 81, + 96, + 96, + 82, + 97, + 3, + 0, + 81, + 96, + 128, + 82, + 97, + 3, + 32, + 81, + 96, + 160, + 82, + 131, + 96, + 192, + 82, + 132, + 96, + 224, + 82, + 97, + 3, + 64, + 81, + 97, + 1, + 0, + 82, + 97, + 3, + 96, + 81, + 97, + 1, + 32, + 82, + 97, + 3, + 128, + 81, + 97, + 1, + 64, + 82, + 97, + 3, + 160, + 81, + 97, + 1, + 96, + 82, + 96, + 0, + 96, + 32, + 96, + 0, + 97, + 1, + 128, + 96, + 0, + 96, + 8, + 90, + 250, + 96, + 0, + 81, + 146, + 22, + 144, + 145, + 22, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, + 1, + 96, + 1, + 96, + 32, + 96, + 64, + 97, + 2, + 32, + 139, + 60, + 97, + 1, + 64, + 97, + 1, + 96, + 97, + 2, + 128, + 139, + 60, + 96, + 100, + 53, + 96, + 128, + 129, + 6, + 96, + 0, + 20, + 130, + 22, + 145, + 80, + 129, + 97, + 1, + 193, + 87, + 115, + 9, + 45, + 206, + 204, + 45, + 141, + 44, + 132, + 14, + 14, + 77, + 237, + 236, + 196, + 13, + 140, + 173, + 204, + 238, + 141, + 96, + 99, + 27, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 32, + 129, + 96, + 100, + 1, + 1, + 128, + 53, + 96, + 32, + 129, + 2, + 131, + 4, + 96, + 4, + 20, + 132, + 22, + 147, + 80, + 131, + 97, + 2, + 6, + 87, + 127, + 78, + 117, + 109, + 98, + 101, + 114, + 32, + 111, + 102, + 32, + 101, + 118, + 97, + 108, + 117, + 97, + 116, + 105, + 111, + 110, + 32, + 109, + 105, + 115, + 109, + 97, + 116, + 99, + 104, + 0, + 0, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 0, + 91, + 129, + 129, + 16, + 21, + 97, + 3, + 177, + 87, + 96, + 32, + 129, + 2, + 96, + 2, + 129, + 2, + 96, + 32, + 130, + 1, + 133, + 1, + 53, + 136, + 97, + 2, + 32, + 81, + 130, + 9, + 97, + 2, + 128, + 81, + 96, + 128, + 82, + 97, + 2, + 160, + 81, + 96, + 160, + 82, + 137, + 3, + 144, + 80, + 97, + 2, + 67, + 129, + 137, + 97, + 0, + 174, + 86, + 91, + 136, + 22, + 151, + 80, + 80, + 134, + 97, + 2, + 119, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 109, + 117, + 108, + 116, + 105, + 112, + 108, + 121, + 32, + 71, + 49, + 32, + 98, + 121, + 32, + 109, + 105, + 110, + 117, + 115, + 95, + 122, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 128, + 96, + 2, + 135, + 4, + 96, + 132, + 1, + 1, + 97, + 2, + 139, + 138, + 130, + 138, + 97, + 0, + 94, + 86, + 91, + 151, + 80, + 135, + 97, + 2, + 196, + 87, + 130, + 96, + 0, + 82, + 127, + 67, + 111, + 109, + 109, + 105, + 116, + 109, + 101, + 110, + 116, + 32, + 112, + 111, + 105, + 110, + 116, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 69, + 67, + 32, + 112, + 111, + 105, + 110, + 116, + 96, + 32, + 82, + 128, + 96, + 64, + 82, + 96, + 96, + 96, + 0, + 253, + 91, + 128, + 53, + 146, + 80, + 96, + 32, + 1, + 53, + 97, + 2, + 215, + 129, + 132, + 138, + 97, + 0, + 143, + 86, + 91, + 151, + 80, + 80, + 134, + 97, + 3, + 9, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 97, + 100, + 100, + 32, + 67, + 32, + 97, + 110, + 100, + 32, + 103, + 95, + 116, + 111, + 95, + 109, + 105, + 110, + 117, + 115, + 95, + 122, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 128, + 81, + 97, + 2, + 64, + 82, + 96, + 160, + 81, + 97, + 2, + 96, + 82, + 96, + 132, + 1, + 144, + 80, + 97, + 3, + 39, + 136, + 130, + 136, + 97, + 0, + 94, + 86, + 91, + 149, + 80, + 133, + 97, + 3, + 88, + 87, + 127, + 79, + 112, + 101, + 110, + 105, + 110, + 103, + 32, + 112, + 111, + 105, + 110, + 116, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 69, + 67, + 32, + 112, + 111, + 105, + 110, + 116, + 0, + 0, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 128, + 53, + 96, + 32, + 130, + 1, + 53, + 145, + 80, + 97, + 3, + 116, + 130, + 130, + 97, + 2, + 96, + 81, + 97, + 2, + 64, + 81, + 139, + 97, + 0, + 201, + 86, + 91, + 135, + 22, + 150, + 80, + 80, + 80, + 132, + 97, + 3, + 169, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 112, + 101, + 114, + 102, + 111, + 114, + 109, + 32, + 112, + 97, + 105, + 114, + 105, + 110, + 103, + 32, + 99, + 104, + 101, + 99, + 107, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 1, + 1, + 97, + 2, + 9, + 86, + 91, + 80, + 80, + 80, + 80, + 128, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 243, + 91, + 96, + 0, + 128, + 131, + 96, + 31, + 132, + 1, + 18, + 97, + 3, + 209, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 3, + 233, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 145, + 80, + 131, + 96, + 32, + 130, + 96, + 5, + 27, + 133, + 1, + 1, + 17, + 21, + 97, + 4, + 4, + 87, + 96, + 0, + 128, + 253, + 91, + 146, + 80, + 146, + 144, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 96, + 134, + 136, + 3, + 18, + 21, + 97, + 4, + 35, + 87, + 96, + 0, + 128, + 253, + 91, + 133, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 4, + 58, + 87, + 96, + 0, + 128, + 253, + 91, + 148, + 80, + 96, + 32, + 134, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 4, + 87, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 136, + 1, + 145, + 80, + 136, + 96, + 31, + 131, + 1, + 18, + 97, + 4, + 107, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 129, + 129, + 17, + 21, + 97, + 4, + 122, + 87, + 96, + 0, + 128, + 253, + 91, + 137, + 96, + 32, + 130, + 133, + 1, + 1, + 17, + 21, + 97, + 4, + 140, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 150, + 80, + 128, + 149, + 80, + 80, + 96, + 64, + 136, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 4, + 170, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 4, + 183, + 136, + 130, + 137, + 1, + 97, + 3, + 191, + 86, + 91, + 150, + 153, + 149, + 152, + 80, + 147, + 150, + 80, + 146, + 148, + 147, + 146, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 49, + 140, + 108, + 158, + 187, + 17, + 230, + 122, + 206, + 151, + 147, + 131, + 228, + 207, + 190, + 199, + 252, + 160, + 161, + 2, + 236, + 137, + 223, + 59, + 105, + 5, + 20, + 202, + 193, + 71, + 38, + 225, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static GRANDSUMVERIFIER_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 43, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 175, + 131, + 161, + 141, + 20, + 97, + 0, + 48, + 87, + 91, + 96, + 0, + 128, + 253, + 91, + 97, + 0, + 67, + 97, + 0, + 62, + 54, + 96, + 4, + 97, + 4, + 11, + 86, + 91, + 97, + 0, + 87, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 243, + 91, + 96, + 0, + 97, + 1, + 53, + 86, + 91, + 96, + 32, + 130, + 1, + 53, + 131, + 129, + 16, + 131, + 53, + 133, + 129, + 16, + 132, + 22, + 145, + 144, + 145, + 22, + 145, + 133, + 96, + 3, + 129, + 128, + 133, + 128, + 9, + 133, + 9, + 8, + 134, + 130, + 131, + 9, + 20, + 131, + 22, + 146, + 80, + 80, + 80, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 130, + 96, + 224, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 128, + 96, + 128, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 96, + 96, + 96, + 128, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 0, + 82, + 130, + 96, + 32, + 82, + 97, + 2, + 192, + 81, + 96, + 64, + 82, + 97, + 2, + 224, + 81, + 96, + 96, + 82, + 97, + 3, + 0, + 81, + 96, + 128, + 82, + 97, + 3, + 32, + 81, + 96, + 160, + 82, + 131, + 96, + 192, + 82, + 132, + 96, + 224, + 82, + 97, + 3, + 64, + 81, + 97, + 1, + 0, + 82, + 97, + 3, + 96, + 81, + 97, + 1, + 32, + 82, + 97, + 3, + 128, + 81, + 97, + 1, + 64, + 82, + 97, + 3, + 160, + 81, + 97, + 1, + 96, + 82, + 96, + 0, + 96, + 32, + 96, + 0, + 97, + 1, + 128, + 96, + 0, + 96, + 8, + 90, + 250, + 96, + 0, + 81, + 146, + 22, + 144, + 145, + 22, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, + 1, + 96, + 1, + 96, + 32, + 96, + 64, + 97, + 2, + 32, + 139, + 60, + 97, + 1, + 64, + 97, + 1, + 96, + 97, + 2, + 128, + 139, + 60, + 96, + 100, + 53, + 96, + 128, + 129, + 6, + 96, + 0, + 20, + 130, + 22, + 145, + 80, + 129, + 97, + 1, + 193, + 87, + 115, + 9, + 45, + 206, + 204, + 45, + 141, + 44, + 132, + 14, + 14, + 77, + 237, + 236, + 196, + 13, + 140, + 173, + 204, + 238, + 141, + 96, + 99, + 27, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 32, + 129, + 96, + 100, + 1, + 1, + 128, + 53, + 96, + 32, + 129, + 2, + 131, + 4, + 96, + 4, + 20, + 132, + 22, + 147, + 80, + 131, + 97, + 2, + 6, + 87, + 127, + 78, + 117, + 109, + 98, + 101, + 114, + 32, + 111, + 102, + 32, + 101, + 118, + 97, + 108, + 117, + 97, + 116, + 105, + 111, + 110, + 32, + 109, + 105, + 115, + 109, + 97, + 116, + 99, + 104, + 0, + 0, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 0, + 91, + 129, + 129, + 16, + 21, + 97, + 3, + 177, + 87, + 96, + 32, + 129, + 2, + 96, + 2, + 129, + 2, + 96, + 32, + 130, + 1, + 133, + 1, + 53, + 136, + 97, + 2, + 32, + 81, + 130, + 9, + 97, + 2, + 128, + 81, + 96, + 128, + 82, + 97, + 2, + 160, + 81, + 96, + 160, + 82, + 137, + 3, + 144, + 80, + 97, + 2, + 67, + 129, + 137, + 97, + 0, + 174, + 86, + 91, + 136, + 22, + 151, + 80, + 80, + 134, + 97, + 2, + 119, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 109, + 117, + 108, + 116, + 105, + 112, + 108, + 121, + 32, + 71, + 49, + 32, + 98, + 121, + 32, + 109, + 105, + 110, + 117, + 115, + 95, + 122, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 128, + 96, + 2, + 135, + 4, + 96, + 132, + 1, + 1, + 97, + 2, + 139, + 138, + 130, + 138, + 97, + 0, + 94, + 86, + 91, + 151, + 80, + 135, + 97, + 2, + 196, + 87, + 130, + 96, + 0, + 82, + 127, + 67, + 111, + 109, + 109, + 105, + 116, + 109, + 101, + 110, + 116, + 32, + 112, + 111, + 105, + 110, + 116, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 69, + 67, + 32, + 112, + 111, + 105, + 110, + 116, + 96, + 32, + 82, + 128, + 96, + 64, + 82, + 96, + 96, + 96, + 0, + 253, + 91, + 128, + 53, + 146, + 80, + 96, + 32, + 1, + 53, + 97, + 2, + 215, + 129, + 132, + 138, + 97, + 0, + 143, + 86, + 91, + 151, + 80, + 80, + 134, + 97, + 3, + 9, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 97, + 100, + 100, + 32, + 67, + 32, + 97, + 110, + 100, + 32, + 103, + 95, + 116, + 111, + 95, + 109, + 105, + 110, + 117, + 115, + 95, + 122, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 128, + 81, + 97, + 2, + 64, + 82, + 96, + 160, + 81, + 97, + 2, + 96, + 82, + 96, + 132, + 1, + 144, + 80, + 97, + 3, + 39, + 136, + 130, + 136, + 97, + 0, + 94, + 86, + 91, + 149, + 80, + 133, + 97, + 3, + 88, + 87, + 127, + 79, + 112, + 101, + 110, + 105, + 110, + 103, + 32, + 112, + 111, + 105, + 110, + 116, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 69, + 67, + 32, + 112, + 111, + 105, + 110, + 116, + 0, + 0, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 128, + 53, + 96, + 32, + 130, + 1, + 53, + 145, + 80, + 97, + 3, + 116, + 130, + 130, + 97, + 2, + 96, + 81, + 97, + 2, + 64, + 81, + 139, + 97, + 0, + 201, + 86, + 91, + 135, + 22, + 150, + 80, + 80, + 80, + 132, + 97, + 3, + 169, + 87, + 127, + 70, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 112, + 101, + 114, + 102, + 111, + 114, + 109, + 32, + 112, + 97, + 105, + 114, + 105, + 110, + 103, + 32, + 99, + 104, + 101, + 99, + 107, + 0, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 253, + 91, + 96, + 1, + 1, + 97, + 2, + 9, + 86, + 91, + 80, + 80, + 80, + 80, + 128, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 243, + 91, + 96, + 0, + 128, + 131, + 96, + 31, + 132, + 1, + 18, + 97, + 3, + 209, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 3, + 233, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 145, + 80, + 131, + 96, + 32, + 130, + 96, + 5, + 27, + 133, + 1, + 1, + 17, + 21, + 97, + 4, + 4, + 87, + 96, + 0, + 128, + 253, + 91, + 146, + 80, + 146, + 144, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 96, + 134, + 136, + 3, + 18, + 21, + 97, + 4, + 35, + 87, + 96, + 0, + 128, + 253, + 91, + 133, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 4, + 58, + 87, + 96, + 0, + 128, + 253, + 91, + 148, + 80, + 96, + 32, + 134, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 4, + 87, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 136, + 1, + 145, + 80, + 136, + 96, + 31, + 131, + 1, + 18, + 97, + 4, + 107, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 129, + 129, + 17, + 21, + 97, + 4, + 122, + 87, + 96, + 0, + 128, + 253, + 91, + 137, + 96, + 32, + 130, + 133, + 1, + 1, + 17, + 21, + 97, + 4, + 140, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 150, + 80, + 128, + 149, + 80, + 80, + 96, + 64, + 136, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 4, + 170, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 4, + 183, + 136, + 130, + 137, + 1, + 97, + 3, + 191, + 86, + 91, + 150, + 153, + 149, + 152, + 80, + 147, + 150, + 80, + 146, + 148, + 147, + 146, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 49, + 140, + 108, + 158, + 187, + 17, + 230, + 122, + 206, + 151, + 147, + 131, + 228, + 207, + 190, + 199, + 252, + 160, + 161, + 2, + 236, + 137, + 223, + 59, + 105, + 5, + 20, + 202, + 193, + 71, + 38, + 225, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The deployed bytecode of the contract. + pub static GRANDSUMVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct GrandSumVerifier(::ethers::contract::Contract); + impl ::core::clone::Clone for GrandSumVerifier { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for GrandSumVerifier { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for GrandSumVerifier { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for GrandSumVerifier { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(stringify!(GrandSumVerifier)) + .field(&self.address()) + .finish() + } + } + impl GrandSumVerifier { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + GRANDSUMVERIFIER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + GRANDSUMVERIFIER_ABI.clone(), + GRANDSUMVERIFIER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `verifyProof` (0xaf83a18d) function + pub fn verify_proof( + &self, + vk: ::ethers::core::types::Address, + proof: ::ethers::core::types::Bytes, + values: ::std::vec::Vec<::ethers::core::types::U256>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 131, 161, 141], (vk, proof, values)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for GrandSumVerifier + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "verifyProof", abi = "verifyProof(address,bytes,uint256[])")] + pub struct VerifyProofCall { + pub vk: ::ethers::core::types::Address, + pub proof: ::ethers::core::types::Bytes, + pub values: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct VerifyProofReturn(pub bool); +} diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs index b2235df0..a06a1bd1 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -7,18 +7,16 @@ pub use inclusion_verifier::*; clippy::upper_case_acronyms, clippy::type_complexity, dead_code, - non_camel_case_types, + non_camel_case_types )] pub mod inclusion_verifier { #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pubInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proofs\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"challenges\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; ///The parsed JSON ABI of the contract. - pub static INCLUSIONVERIFIER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(|| { - ::ethers::core::utils::__serde_json::from_str(__ABI) - .expect("ABI is always valid") - }); + pub static INCLUSIONVERIFIER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); #[rustfmt::skip] const __BYTECODE: &[u8] = &[ 96, @@ -40,13 +38,12 @@ pub mod inclusion_verifier { 91, 80, 97, - 86, - 54, + 4, + 89, 128, - 98, - 0, + 97, 0, - 33, + 32, 96, 0, 57, @@ -88,10 +85,10 @@ pub mod inclusion_verifier { 28, 128, 99, - 189, - 32, - 90, - 144, + 71, + 246, + 181, + 170, 20, 97, 0, @@ -113,8 +110,8 @@ pub mod inclusion_verifier { 96, 4, 97, - 84, - 248, + 3, + 60, 86, 91, 97, @@ -144,124 +141,81 @@ pub mod inclusion_verifier { 91, 96, 0, - 96, - 1, - 97, - 0, - 99, - 97, - 84, - 33, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, 97, - 0, - 217, + 1, + 53, 86, 91, 96, - 0, - 128, - 81, - 96, 32, - 97, - 85, - 193, + 130, + 1, + 53, 131, - 57, 129, - 81, - 145, - 82, - 128, - 131, 16, - 129, 131, + 53, + 133, + 129, 16, + 132, 22, + 145, 144, - 131, - 128, - 9, - 96, - 0, - 128, - 81, + 145, + 22, + 145, + 133, 96, - 32, - 97, - 85, - 193, - 131, - 57, + 3, 129, - 81, - 145, - 82, + 128, + 133, + 128, + 9, + 133, + 9, + 8, + 134, + 130, 131, - 132, 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, + 20, 131, - 57, + 22, + 146, + 80, + 80, + 80, + 147, + 146, + 80, + 80, + 80, + 86, + 91, 129, - 81, - 145, + 96, + 192, 82, - 132, 130, - 9, - 144, - 80, + 96, + 224, + 82, 96, 0, + 96, + 64, + 96, + 128, 128, - 81, 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, + 128, 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, + 6, + 90, + 250, 144, 145, 22, @@ -272,43523 +226,1722 @@ pub mod inclusion_verifier { 80, 86, 91, - 128, - 96, - 32, - 135, - 1, - 81, - 6, + 129, 96, - 32, - 131, - 1, + 192, 82, - 128, 96, - 64, - 135, - 1, - 81, - 6, + 0, 96, 64, - 131, - 1, - 82, - 128, - 96, 96, - 135, - 1, - 81, - 6, + 128, 96, 96, - 131, - 1, - 82, - 128, 96, 128, - 135, - 1, - 81, - 6, 96, - 128, - 131, - 1, - 82, - 127, - 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, + 7, + 90, + 250, + 144, + 145, + 22, 146, - 229, - 198, - 185, + 145, 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, + 80, + 86, + 91, + 129, 96, 0, - 131, - 1, 82, + 130, 96, 32, - 133, - 1, - 81, - 128, - 96, - 160, - 132, - 1, 82, + 97, + 2, + 128, + 81, 96, 64, - 134, - 1, + 82, + 97, + 2, + 160, 81, - 128, 96, - 192, - 133, - 1, + 96, 82, - 132, 97, - 1, - 80, - 130, - 132, + 2, + 192, + 81, + 96, + 128, + 82, 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, + 2, + 224, + 81, 96, + 160, + 82, + 131, 96, - 133, - 1, - 81, - 128, + 192, + 82, + 132, 96, 224, - 132, - 1, 82, - 96, - 128, - 134, - 1, + 97, + 3, + 0, 81, - 128, 97, 1, 0, - 133, - 1, 82, - 132, - 97, - 1, - 119, - 130, - 132, 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 160, - 133, - 1, + 3, + 32, 81, - 128, 97, 1, 32, - 132, - 1, 82, - 96, - 192, - 134, - 1, + 97, + 3, + 64, 81, - 128, 97, 1, 64, - 133, - 1, 82, - 132, + 97, + 3, + 96, + 81, 97, 1, - 159, - 130, - 132, + 96, + 82, + 96, + 0, + 96, + 32, + 96, + 0, 97, + 1, + 128, + 96, 0, - 119, - 86, - 91, + 96, + 8, + 90, + 250, + 96, + 0, + 81, + 146, + 22, + 144, + 145, 22, + 149, 148, 80, 80, 80, - 97, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, 1, 96, - 96, - 0, - 131, 1, - 32, + 96, + 192, 97, 1, 96, - 131, - 1, - 82, 97, - 1, + 2, + 64, + 141, + 60, 96, - 130, - 1, - 81, - 129, + 132, + 53, + 96, + 128, 129, 6, + 96, + 0, + 20, + 130, + 22, + 145, + 80, + 129, 97, 1, + 155, + 87, + 96, + 0, 128, + 253, + 91, + 96, + 32, + 129, + 96, 132, 1, - 82, + 1, 128, + 53, + 96, + 4, + 129, + 20, + 132, + 22, + 147, + 80, + 131, 97, 1, - 160, - 132, + 182, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 130, 1, + 53, + 97, + 3, + 0, 82, - 80, 96, - 224, - 133, + 64, + 130, 1, - 81, - 128, + 53, 97, - 1, - 192, - 132, - 1, + 3, + 32, 82, - 97, - 1, - 0, - 134, + 96, + 96, + 130, 1, - 81, - 128, + 53, 97, - 1, - 224, - 133, - 1, + 3, + 64, 82, - 132, - 97, - 1, - 237, + 96, + 128, 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, 1, + 53, + 97, + 3, + 96, + 82, + 96, 32, - 133, - 1, - 81, 128, - 97, + 130, 2, - 0, - 132, - 1, - 82, - 97, + 131, 1, - 64, - 134, 1, - 81, + 145, + 80, + 80, 128, - 97, - 2, + 53, + 96, 32, - 133, - 1, - 82, - 132, - 97, + 129, 2, - 23, - 130, + 131, + 4, + 96, + 4, + 20, 132, + 22, + 147, + 80, + 131, 97, + 1, + 254, + 87, + 96, 0, - 119, - 86, + 128, + 253, 91, 96, - 160, - 97, - 1, - 160, - 135, - 1, - 32, - 97, - 2, - 64, - 135, - 1, + 0, + 91, 129, - 144, - 82, - 133, 129, - 6, + 16, + 21, 97, 2, - 96, - 136, - 1, - 82, + 226, + 87, 97, 2, + 64, + 81, + 96, 128, - 135, - 1, 82, - 22, - 148, - 80, - 96, - 1, - 145, - 80, - 80, 97, 2, - 160, - 131, - 1, - 83, 96, - 33, - 97, - 2, - 128, - 131, - 1, - 32, - 97, - 2, + 81, + 96, 160, - 131, - 1, - 129, - 144, 82, + 96, + 32, 129, 129, - 6, - 97, 2, - 192, 132, 1, - 82, - 97, - 2, - 224, - 131, - 1, - 82, - 97, - 1, - 96, - 133, - 1, - 81, - 97, - 3, - 0, - 131, - 1, - 129, - 144, - 82, - 97, 1, - 128, + 53, 134, - 1, - 81, - 97, 3, - 32, - 132, - 1, + 96, + 192, 129, 144, 82, - 132, + 96, + 64, + 130, + 2, 97, 2, - 138, + 53, 130, - 132, + 136, 97, 0, - 119, + 174, 86, 91, + 135, 22, - 148, - 80, - 80, + 150, 80, + 134, 97, - 1, - 160, - 133, - 1, - 81, + 2, + 67, + 87, + 96, + 0, 128, - 97, - 3, - 64, - 132, - 1, - 82, - 97, - 1, - 192, - 134, - 1, - 81, + 253, + 91, 128, - 97, - 3, 96, - 133, + 2, + 135, + 4, + 96, + 164, 1, - 82, - 132, + 1, + 145, + 80, 97, 2, - 180, - 130, - 132, + 89, + 137, + 131, + 137, 97, 0, - 119, + 94, 86, 91, - 22, - 148, - 80, - 80, + 150, 80, - 97, - 1, - 224, - 133, - 1, - 81, - 128, - 97, - 3, - 128, - 132, - 1, - 82, + 134, 97, 2, + 101, + 87, + 96, 0, - 134, - 1, - 81, 128, - 97, - 3, - 160, - 133, + 253, + 91, + 96, + 32, + 130, 1, - 82, - 132, + 53, + 145, + 53, 97, 2, - 222, + 119, + 131, 130, - 132, + 138, 97, 0, - 119, + 143, 86, 91, - 22, - 148, - 80, + 151, 80, 80, + 134, 97, 2, - 32, - 133, - 1, - 81, - 128, - 97, - 3, - 192, 132, - 1, - 82, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 128, + 81, 97, 2, - 64, - 134, - 1, + 0, + 82, + 96, + 160, 81, - 128, 97, - 3, - 224, - 133, - 1, + 2, + 32, 82, - 132, + 96, + 164, + 1, + 144, + 80, 97, - 3, - 8, + 2, + 162, + 136, 130, - 132, + 136, 97, 0, - 119, + 94, 86, 91, - 22, - 148, - 80, - 80, + 149, 80, - 97, - 1, - 32, + 133, 97, 2, - 224, - 131, - 1, - 32, - 97, - 4, - 0, - 131, - 1, - 82, - 97, - 4, + 174, + 87, + 96, 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 4, - 32, - 132, - 1, - 82, 128, - 97, - 4, - 64, - 132, + 253, + 91, + 128, + 53, + 96, + 32, + 130, 1, - 82, + 53, + 145, 80, 97, 2, - 96, - 133, - 1, - 81, - 128, - 97, - 4, - 96, - 132, - 1, - 82, + 202, + 130, + 130, 97, 2, - 128, - 134, - 1, + 32, 81, - 128, - 97, - 4, - 128, - 133, - 1, - 82, - 132, 97, - 3, - 88, - 130, - 132, + 2, + 0, + 81, + 139, 97, 0, - 119, + 201, 86, 91, + 135, 22, - 148, + 150, 80, 80, 80, + 132, 97, 2, - 160, - 133, - 1, - 81, + 218, + 87, + 96, + 0, 128, - 97, - 4, - 160, - 132, + 253, + 91, + 96, 1, - 82, - 97, - 2, - 192, - 134, 1, - 81, - 128, 97, - 4, - 192, - 133, + 2, 1, - 82, - 132, - 97, - 3, - 130, - 130, - 132, - 97, - 0, - 119, 86, 91, - 22, - 148, 80, 80, 80, - 97, - 2, - 224, - 133, - 1, - 81, + 80, 128, - 97, - 4, - 224, - 132, - 1, + 96, + 0, 82, - 97, - 3, + 96, + 32, + 96, 0, - 134, - 1, - 81, - 128, - 97, - 5, + 243, + 91, + 96, 0, - 133, - 1, - 82, + 128, + 131, + 96, + 31, 132, + 1, + 18, 97, 3, - 172, - 130, - 132, - 97, + 2, + 87, + 96, 0, - 119, - 86, + 128, + 253, 91, - 22, - 148, - 80, - 80, 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, 97, 3, - 32, - 133, - 1, - 81, + 26, + 87, + 96, + 0, 128, - 97, - 5, + 253, + 91, + 96, 32, - 132, - 1, - 82, - 97, - 3, - 64, - 134, + 131, 1, - 81, - 128, - 97, + 145, + 80, + 131, + 96, + 32, + 130, + 96, 5, - 64, + 27, 133, 1, - 82, - 132, + 1, + 17, + 21, 97, 3, - 214, - 130, - 132, - 97, + 53, + 87, + 96, 0, - 119, - 86, + 128, + 253, 91, - 22, - 148, - 80, + 146, 80, + 146, + 144, 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 128, + 136, + 138, + 3, + 18, + 21, 97, 3, + 87, + 87, 96, - 133, - 1, - 81, + 0, 128, - 97, - 5, + 253, + 91, + 135, + 53, 96, - 132, 1, - 82, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, 97, 3, + 110, + 87, + 96, + 0, 128, - 134, + 253, + 91, + 150, + 80, + 96, + 32, + 136, 1, - 81, - 128, - 97, - 5, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 128, - 133, - 1, - 82, - 132, - 97, - 4, - 0, 130, - 132, + 17, + 21, 97, + 3, + 139, + 87, + 96, 0, - 119, - 86, + 128, + 253, 91, - 22, - 148, - 80, - 80, - 80, - 97, + 129, + 138, 1, + 145, + 80, + 138, 96, - 97, - 4, - 64, + 31, 131, 1, - 32, + 18, 97, - 5, - 160, - 131, - 1, - 82, + 3, + 159, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 129, + 129, + 17, + 21, 97, - 5, - 160, + 3, + 174, + 87, + 96, + 0, + 128, + 253, + 91, + 139, + 96, + 32, 130, + 133, 1, - 81, - 129, - 129, - 6, + 1, + 17, + 21, 97, - 5, + 3, 192, - 132, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, 1, - 82, + 152, + 80, 128, - 97, - 5, - 224, - 132, + 151, + 80, + 80, + 96, + 64, + 138, 1, - 82, + 53, + 145, 80, 128, + 130, + 17, + 21, 97, 3, - 160, - 134, - 1, - 81, - 6, - 97, - 6, + 222, + 87, + 96, 0, - 131, - 1, - 82, 128, + 253, + 91, 97, 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 32, + 234, + 139, 131, + 140, 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, 97, - 6, - 64, - 131, + 2, + 240, + 86, + 91, + 144, + 150, + 80, + 148, + 80, + 96, + 96, + 138, 1, - 82, + 53, + 145, + 80, 128, + 130, + 17, + 21, 97, 4, - 0, - 134, - 1, - 81, - 6, - 97, - 6, + 3, + 87, 96, - 131, - 1, - 82, + 0, 128, + 253, + 91, + 80, 97, 4, - 32, - 134, + 16, + 138, + 130, + 139, 1, - 81, - 6, 97, - 6, - 128, - 131, - 1, - 82, + 2, + 240, + 86, + 91, + 152, + 155, + 151, + 154, + 80, + 149, + 152, + 80, + 147, + 150, + 146, + 149, + 146, + 147, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 126, + 94, + 18, + 135, + 237, + 192, + 106, + 176, + 138, + 117, + 148, + 175, + 188, + 5, + 29, + 238, + 102, + 42, + 95, + 89, + 105, + 55, + 42, + 182, + 85, + 202, + 193, + 11, + 170, + 77, + 47, + 178, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static INCLUSIONVERIFIER_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ + 96, 128, - 97, - 4, + 96, 64, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, 82, + 52, 128, + 21, 97, - 4, + 0, + 16, + 87, 96, - 134, - 1, - 81, - 6, - 97, - 6, - 192, - 131, - 1, - 82, + 0, 128, - 97, + 253, + 91, + 80, + 96, 4, - 128, - 134, - 1, - 81, - 6, + 54, + 16, 97, - 6, + 0, + 43, + 87, + 96, + 0, + 53, + 96, 224, - 131, - 1, - 82, + 28, 128, + 99, + 71, + 246, + 181, + 170, + 20, 97, - 4, - 160, - 134, - 1, - 81, - 6, - 97, - 7, 0, - 131, - 1, - 82, + 48, + 87, + 91, + 96, + 0, 128, + 253, + 91, 97, + 0, + 67, + 97, + 0, + 62, + 54, + 96, 4, - 192, - 134, - 1, - 81, - 6, 97, - 7, - 32, - 131, - 1, - 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, - 97, - 7, - 64, - 131, - 1, - 82, - 128, + 3, + 60, + 86, + 91, 97, - 5, 0, - 134, - 1, + 87, + 86, + 91, + 96, + 64, 81, - 6, - 97, - 7, + 144, + 21, + 21, + 129, + 82, 96, - 131, + 32, 1, - 82, + 96, + 64, + 81, 128, + 145, + 3, + 144, + 243, + 91, + 96, + 0, 97, - 5, + 1, + 53, + 86, + 91, + 96, 32, - 134, + 130, 1, - 81, - 6, - 97, - 7, - 128, + 53, 131, - 1, - 82, + 129, + 16, + 131, + 53, + 133, + 129, + 16, + 132, + 22, + 145, + 144, + 145, + 22, + 145, + 133, + 96, + 3, + 129, 128, - 97, - 5, - 64, + 133, + 128, + 9, + 133, + 9, + 8, 134, - 1, - 81, - 6, - 97, - 7, - 160, + 130, 131, - 1, + 9, + 20, + 131, + 22, + 146, + 80, + 80, + 80, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 130, + 96, + 224, 82, + 96, + 0, + 96, + 64, + 96, + 128, + 128, + 96, 128, - 97, - 5, 96, - 134, - 1, - 81, 6, - 97, - 7, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, 192, - 131, - 1, 82, + 96, + 0, + 96, + 64, + 96, 128, - 97, - 5, + 96, + 96, + 96, 128, - 134, - 1, - 81, - 6, - 97, + 96, 7, - 224, - 131, - 1, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 0, + 82, + 130, + 96, + 32, 82, + 97, + 2, 128, + 81, + 96, + 64, + 82, 97, - 5, + 2, 160, - 134, - 1, 81, - 6, - 97, - 8, - 0, - 131, - 1, + 96, + 96, 82, - 128, 97, - 5, + 2, 192, - 134, - 1, 81, - 6, - 97, - 8, - 32, - 131, - 1, - 82, + 96, 128, + 82, 97, - 5, + 2, 224, - 134, - 1, 81, - 6, - 97, - 8, - 64, + 96, + 160, + 82, 131, - 1, + 96, + 192, + 82, + 132, + 96, + 224, 82, - 128, 97, - 6, + 3, 0, - 134, - 1, 81, - 6, 97, - 8, - 96, - 131, 1, + 0, 82, - 128, 97, - 6, + 3, 32, - 134, - 1, 81, - 6, 97, - 8, - 128, - 131, 1, + 32, 82, - 128, 97, - 6, + 3, 64, - 134, - 1, 81, - 6, 97, - 8, - 160, - 131, 1, + 64, 82, - 128, 97, - 6, + 3, 96, - 134, - 1, 81, - 6, 97, - 8, - 192, - 131, 1, + 96, 82, - 128, - 97, - 6, - 128, - 134, - 1, - 81, - 6, + 96, + 0, + 96, + 32, + 96, + 0, 97, - 8, - 224, - 131, 1, - 82, 128, - 97, - 6, - 160, - 134, - 1, - 81, - 6, - 97, - 9, + 96, + 0, + 96, + 8, + 90, + 250, + 96, 0, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 134, - 1, 81, - 6, - 97, - 9, + 146, + 22, + 144, + 145, + 22, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, 32, - 131, - 1, - 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, - 97, - 9, - 64, - 131, - 1, - 82, - 128, - 97, - 7, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, 0, - 134, 1, - 81, - 6, - 97, - 9, 96, - 131, - 1, - 82, - 128, - 97, - 7, - 32, - 134, 1, - 81, - 6, + 96, + 192, 97, - 9, - 128, - 131, 1, - 82, - 128, + 96, 97, - 7, + 2, 64, - 134, - 1, - 81, + 141, + 60, + 96, + 132, + 53, + 96, + 128, + 129, 6, + 96, + 0, + 20, + 130, + 22, + 145, + 80, + 129, 97, - 9, - 160, - 131, 1, - 82, + 155, + 87, + 96, + 0, 128, - 97, - 7, + 253, + 91, 96, - 134, + 32, + 129, + 96, + 132, 1, - 81, - 6, - 97, - 9, - 192, - 131, 1, - 82, 128, + 53, + 96, + 4, + 129, + 20, + 132, + 22, + 147, + 80, + 131, 97, - 7, - 128, - 134, 1, - 81, - 6, - 97, - 9, - 224, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 134, - 1, - 81, - 6, - 97, - 10, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 192, - 134, - 1, - 81, - 6, - 97, - 10, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 224, - 134, - 1, - 81, - 6, - 97, - 10, - 64, - 131, - 1, - 82, - 97, - 4, - 128, - 97, - 5, - 224, - 131, - 1, - 32, - 97, - 10, - 96, - 131, - 1, - 82, - 97, - 10, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 10, - 128, - 132, - 1, - 82, - 128, - 97, - 10, - 160, - 132, - 1, - 82, - 80, - 96, - 1, - 97, - 10, - 192, - 131, - 1, - 83, - 96, - 33, - 97, - 10, - 160, - 131, - 1, - 32, - 97, - 10, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 10, - 224, - 132, - 1, - 82, - 97, - 11, - 0, - 131, - 1, - 82, - 97, - 8, - 0, - 133, - 1, - 81, - 97, - 11, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 32, - 134, - 1, - 81, - 97, - 11, - 64, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 6, - 137, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 97, - 11, - 0, - 131, - 1, - 32, - 97, - 11, - 96, - 131, - 1, - 82, - 97, - 11, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 11, - 128, - 132, - 1, - 82, - 128, - 97, - 11, - 160, - 132, - 1, - 82, - 80, - 97, - 8, - 64, - 133, - 1, - 81, - 128, - 97, - 11, - 192, - 132, - 1, - 82, - 97, - 8, - 96, - 134, - 1, - 81, - 128, - 97, - 11, - 224, - 133, - 1, - 82, - 132, - 97, - 6, - 216, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 12, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 224, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 64, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 13, - 64, - 132, - 1, - 81, - 8, - 97, - 13, - 96, - 131, - 1, - 82, - 128, - 127, - 48, - 94, - 65, - 233, - 18, - 213, - 121, - 245, - 179, - 25, - 59, - 173, - 202, - 177, - 40, - 50, - 28, - 142, - 225, - 203, - 112, - 170, - 57, - 99, - 49, - 185, - 121, - 85, - 61, - 130, - 0, - 1, - 97, - 13, - 96, - 132, - 1, - 81, - 9, - 97, - 13, - 128, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 160, - 131, - 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, - 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 13, - 192, - 131, - 1, - 82, - 128, - 127, - 36, - 152, - 194, - 211, - 175, - 250, - 27, - 170, - 246, - 65, - 157, - 188, - 203, - 106, - 5, - 75, - 184, - 115, - 89, - 192, - 46, - 173, - 229, - 174, - 172, - 216, - 108, - 132, - 117, - 123, - 144, - 81, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 224, - 131, - 1, - 82, - 128, - 127, - 11, - 203, - 139, - 159, - 49, - 55, - 132, - 126, - 194, - 14, - 167, - 249, - 182, - 23, - 83, - 17, - 111, - 192, - 142, - 136, - 75, - 11, - 138, - 226, - 151, - 9, - 137, - 15, - 122, - 132, - 111, - 176, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 0, - 131, - 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 32, - 131, - 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, - 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, - 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 64, - 131, - 1, - 82, - 128, - 127, - 40, - 119, - 16, - 113, - 171, - 22, - 51, - 1, - 78, - 174, - 39, - 207, - 193, - 109, - 94, - 190, - 8, - 168, - 254, - 47, - 201, - 232, - 80, - 68, - 228, - 164, - 95, - 130, - 193, - 76, - 216, - 37, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 96, - 131, - 1, - 82, - 128, - 127, - 7, - 237, - 62, - 1, - 54, - 27, - 109, - 40, - 105, - 162, - 29, - 230, - 192, - 19, - 249, - 159, - 31, - 138, - 234, - 24, - 175, - 209, - 32, - 76, - 95, - 61, - 150, - 17, - 46, - 179, - 39, - 220, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 128, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 160, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 192, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 224, - 131, - 1, - 82, - 128, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 231, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 64, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 96, - 131, - 1, - 82, - 128, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 162, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 160, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 132, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 192, - 131, - 1, - 82, - 128, - 127, - 25, - 8, - 89, - 125, - 47, - 195, - 188, - 29, - 163, - 18, - 239, - 163, - 68, - 224, - 252, - 138, - 112, - 121, - 48, - 2, - 56, - 242, - 238, - 53, - 119, - 79, - 17, - 126, - 102, - 253, - 68, - 103, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 224, - 131, - 1, - 82, - 128, - 127, - 23, - 91, - 244, - 245, - 177, - 109, - 228, - 12, - 21, - 61, - 86, - 19, - 60, - 160, - 91, - 210, - 183, - 186, - 184, - 70, - 64, - 198, - 130, - 91, - 204, - 146, - 228, - 21, - 137, - 2, - 187, - 154, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 16, - 0, - 131, - 1, - 82, - 97, - 13, - 192, - 130, - 1, - 81, - 129, - 129, - 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 16, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 13, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 64, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 17, - 128, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 160, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 192, - 131, - 1, - 82, - 97, - 17, - 64, - 130, - 1, - 81, - 97, - 17, - 224, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 18, - 0, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 18, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 17, - 96, - 133, - 1, - 96, - 192, - 97, - 17, - 128, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 17, - 96, - 130, - 1, - 81, - 96, - 0, - 97, - 13, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 32, - 134, - 1, - 81, - 9, - 97, - 13, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 16, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 0, - 134, - 1, - 81, - 9, - 97, - 16, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 224, - 134, - 1, - 81, - 9, - 97, - 15, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 192, - 134, - 1, - 81, - 9, - 97, - 15, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 160, - 134, - 1, - 81, - 9, - 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 128, - 134, - 1, - 81, - 9, - 97, - 15, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 96, - 134, - 1, - 81, - 9, - 97, - 14, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 64, - 134, - 1, - 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 32, - 134, - 1, - 81, - 9, - 97, - 14, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 192, - 134, - 1, - 81, - 9, - 97, - 14, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 192, - 133, - 1, - 129, - 144, - 82, - 97, - 13, - 160, - 133, - 1, - 81, - 132, - 147, - 80, - 144, - 145, - 80, - 9, - 97, - 18, - 64, - 131, - 1, - 82, - 128, - 97, - 14, - 0, - 131, - 1, - 81, - 97, - 13, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 96, - 131, - 1, - 82, - 128, - 97, - 14, - 64, - 131, - 1, - 81, - 97, - 14, - 32, - 132, - 1, - 81, - 9, - 97, - 18, - 128, - 131, - 1, - 82, - 128, - 97, - 14, - 128, - 131, - 1, - 81, - 97, - 14, - 96, - 132, - 1, - 81, - 9, - 97, - 18, - 160, - 131, - 1, - 82, - 128, - 97, - 14, - 192, - 131, - 1, - 81, - 97, - 14, - 160, - 132, - 1, - 81, - 9, - 97, - 18, - 192, - 131, - 1, - 82, - 128, - 97, - 15, - 0, - 131, - 1, - 81, - 97, - 14, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 224, - 131, - 1, - 82, - 128, - 97, - 15, - 64, - 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, - 81, - 9, - 97, - 19, - 0, - 131, - 1, - 82, - 128, - 97, - 15, - 128, - 131, - 1, - 81, - 97, - 15, - 96, - 132, - 1, - 81, - 9, - 97, - 19, - 32, - 131, - 1, - 82, - 128, - 97, - 15, - 192, - 131, - 1, - 81, - 97, - 15, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 64, - 131, - 1, - 82, - 128, - 97, - 16, - 0, - 131, - 1, - 81, - 97, - 15, - 224, - 132, - 1, - 81, - 9, - 97, - 19, - 96, - 131, - 1, - 82, - 128, - 96, - 32, - 131, - 1, - 81, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 96, - 64, - 134, - 1, - 81, - 97, - 19, - 32, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 96, - 134, - 1, - 81, - 97, - 19, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 128, - 134, - 1, - 81, - 97, - 19, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 19, - 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, - 81, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, - 144, - 8, - 97, - 19, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 224, - 131, - 1, - 82, - 128, - 97, - 19, - 224, - 131, - 1, - 81, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 0, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, - 128, - 131, - 1, - 81, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 20, - 160, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 192, - 131, - 1, - 82, - 128, - 97, - 20, - 192, - 131, - 1, - 81, - 97, - 20, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 224, - 132, - 1, - 81, - 8, - 97, - 21, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 32, - 131, - 1, - 82, - 128, - 97, - 21, - 32, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 21, - 64, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 96, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 21, - 128, - 131, - 1, - 82, - 128, - 97, - 21, - 128, - 131, - 1, - 81, - 97, - 21, - 96, - 132, - 1, - 81, - 8, - 97, - 21, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 21, - 160, - 132, - 1, - 81, - 8, - 97, - 21, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 224, - 131, - 1, - 82, - 128, - 97, - 21, - 224, - 131, - 1, - 81, - 97, - 21, - 64, - 132, - 1, - 81, - 8, - 97, - 22, - 0, - 131, - 1, - 82, - 128, - 97, - 22, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 0, - 132, - 1, - 81, - 8, - 97, - 22, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 22, - 96, - 131, - 1, - 82, - 128, - 97, - 22, - 96, - 131, - 1, - 81, - 97, - 22, - 32, - 132, - 1, - 81, - 8, - 97, - 22, - 128, - 131, - 1, - 82, - 128, - 97, - 22, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 160, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 22, - 192, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 22, - 224, - 131, - 1, - 82, - 128, - 97, - 22, - 224, - 131, - 1, - 81, - 97, - 22, - 192, - 132, - 1, - 81, - 8, - 97, - 23, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 23, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 96, - 131, - 1, - 82, - 128, - 97, - 23, - 96, - 131, - 1, - 81, - 97, - 23, - 32, - 132, - 1, - 81, - 9, - 97, - 23, - 128, - 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, - 57, - 10, - 218, - 127, - 67, - 112, - 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 23, - 160, - 131, - 1, - 82, - 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, - 96, - 254, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 23, - 192, - 131, - 1, - 82, - 128, - 97, - 23, - 192, - 131, - 1, - 81, - 97, - 23, - 160, - 132, - 1, - 81, - 8, - 97, - 23, - 224, - 131, - 1, - 82, - 128, - 97, - 23, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 23, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 24, - 32, - 131, - 1, - 82, - 128, - 97, - 24, - 32, - 131, - 1, - 81, - 97, - 22, - 160, - 132, - 1, - 81, - 8, - 97, - 24, - 64, - 131, - 1, - 82, - 128, - 97, - 24, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 24, - 96, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 24, - 128, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 24, - 160, - 131, - 1, - 82, - 128, - 97, - 24, - 160, - 131, - 1, - 81, - 97, - 24, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 24, - 224, - 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, - 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 25, - 0, - 131, - 1, - 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, - 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 25, - 32, - 131, - 1, - 82, - 128, - 97, - 25, - 32, - 131, - 1, - 81, - 97, - 25, - 0, - 132, - 1, - 81, - 8, - 97, - 25, - 64, - 131, - 1, - 82, - 128, - 97, - 25, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 24, - 224, - 132, - 1, - 81, - 8, - 97, - 25, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 128, - 131, - 1, - 82, - 128, - 97, - 25, - 128, - 131, - 1, - 81, - 97, - 24, - 96, - 132, - 1, - 81, - 8, - 97, - 25, - 160, - 131, - 1, - 82, - 128, - 97, - 25, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 25, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 25, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 2, - 8, - 97, - 26, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 4, - 8, - 97, - 26, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 97, - 6, - 192, - 132, - 1, - 81, - 8, - 97, - 26, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 26, - 160, - 132, - 1, - 81, - 8, - 97, - 26, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 224, - 131, - 1, - 82, - 128, - 97, - 26, - 224, - 131, - 1, - 81, - 97, - 25, - 192, - 132, - 1, - 81, - 8, - 97, - 27, - 0, - 131, - 1, - 82, - 128, - 97, - 27, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 96, - 131, - 1, - 82, - 128, - 97, - 27, - 96, - 131, - 1, - 81, - 97, - 27, - 32, - 132, - 1, - 81, - 8, - 97, - 27, - 128, - 131, - 1, - 82, - 128, - 97, - 27, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 160, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 0, - 132, - 1, - 81, - 9, - 97, - 27, - 192, - 131, - 1, - 82, - 128, - 97, - 27, - 192, - 131, - 1, - 81, - 97, - 27, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 224, - 131, - 1, - 82, - 128, - 97, - 27, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 0, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 192, - 132, - 1, - 81, - 9, - 97, - 28, - 32, - 131, - 1, - 82, - 128, - 97, - 28, - 32, - 131, - 1, - 81, - 97, - 28, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 64, - 131, - 1, - 82, - 128, - 97, - 28, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 96, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 22, - 64, - 132, - 1, - 81, - 9, - 97, - 28, - 128, - 131, - 1, - 82, - 128, - 97, - 28, - 128, - 131, - 1, - 81, - 97, - 28, - 96, - 132, - 1, - 81, - 8, - 97, - 28, - 160, - 131, - 1, - 82, - 128, - 97, - 28, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 192, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 24, - 0, - 132, - 1, - 81, - 9, - 97, - 28, - 224, - 131, - 1, - 82, - 128, - 97, - 28, - 224, - 131, - 1, - 81, - 97, - 28, - 192, - 132, - 1, - 81, - 8, - 97, - 29, - 0, - 131, - 1, - 82, - 128, - 97, - 29, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 32, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 29, - 64, - 131, - 1, - 81, - 97, - 29, - 32, - 132, - 1, - 81, - 8, - 97, - 29, - 96, - 131, - 1, - 82, - 128, - 97, - 29, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 3, - 8, - 97, - 29, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 26, - 192, - 132, - 1, - 81, - 9, - 97, - 29, - 224, - 131, - 1, - 82, - 128, - 97, - 29, - 224, - 131, - 1, - 81, - 97, - 29, - 128, - 132, - 1, - 81, - 8, - 97, - 30, - 0, - 131, - 1, - 82, - 128, - 97, - 30, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 32, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 27, - 64, - 132, - 1, - 81, - 9, - 97, - 30, - 64, - 131, - 1, - 82, - 128, - 97, - 30, - 64, - 131, - 1, - 81, - 97, - 30, - 32, - 132, - 1, - 81, - 8, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 97, - 30, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 97, - 26, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 160, - 131, - 1, - 82, - 128, - 97, - 30, - 160, - 131, - 1, - 81, - 97, - 29, - 160, - 132, - 1, - 81, - 9, - 97, - 30, - 192, - 131, - 1, - 82, - 128, - 97, - 30, - 192, - 131, - 1, - 81, - 97, - 26, - 96, - 132, - 1, - 81, - 9, - 97, - 30, - 224, - 131, - 1, - 82, - 128, - 97, - 30, - 224, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 31, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 31, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 64, - 131, - 1, - 82, - 128, - 97, - 31, - 64, - 131, - 1, - 81, - 97, - 30, - 128, - 132, - 1, - 81, - 8, - 97, - 31, - 96, - 131, - 1, - 82, - 128, - 97, - 31, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 31, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 31, - 160, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 31, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 31, - 224, - 132, - 1, - 81, - 8, - 97, - 32, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 32, - 32, - 131, - 1, - 82, - 128, - 97, - 32, - 32, - 131, - 1, - 81, - 97, - 31, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 64, - 131, - 1, - 82, - 128, - 97, - 32, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 32, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 32, - 128, - 131, - 1, - 82, - 128, - 97, - 32, - 128, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 32, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 32, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 32, - 192, - 132, - 1, - 81, - 8, - 97, - 32, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 33, - 0, - 131, - 1, - 82, - 128, - 97, - 33, - 0, - 131, - 1, - 81, - 97, - 32, - 96, - 132, - 1, - 81, - 8, - 97, - 33, - 32, - 131, - 1, - 82, - 128, - 97, - 33, - 32, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 33, - 64, - 131, - 1, - 82, - 128, - 97, - 26, - 0, - 131, - 1, - 81, - 97, - 29, - 160, - 132, - 1, - 81, - 9, - 97, - 33, - 96, - 131, - 1, - 82, - 128, - 97, - 33, - 96, - 131, - 1, - 81, - 97, - 26, - 96, - 132, - 1, - 81, - 9, - 97, - 33, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 33, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 33, - 160, - 132, - 1, - 81, - 8, - 97, - 33, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 33, - 224, - 131, - 1, - 82, - 128, - 97, - 33, - 224, - 131, - 1, - 81, - 97, - 33, - 64, - 132, - 1, - 81, - 8, - 97, - 34, - 0, - 131, - 1, - 82, - 128, - 97, - 34, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 64, - 131, - 1, - 82, - 128, - 97, - 34, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 96, - 131, - 1, - 82, - 128, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 34, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 160, - 131, - 1, - 82, - 128, - 97, - 34, - 160, - 131, - 1, - 81, - 97, - 34, - 96, - 132, - 1, - 81, - 8, - 97, - 34, - 192, - 131, - 1, - 82, - 128, - 97, - 34, - 192, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 224, - 131, - 1, - 82, - 97, - 9, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 35, - 0, - 131, - 1, - 82, - 128, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 35, - 0, - 132, - 1, - 81, - 8, - 97, - 35, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 64, - 131, - 1, - 82, - 128, - 97, - 35, - 64, - 131, - 1, - 81, - 97, - 34, - 224, - 132, - 1, - 81, - 8, - 97, - 35, - 96, - 131, - 1, - 82, - 128, - 97, - 35, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 35, - 128, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 128, - 132, - 1, - 81, - 8, - 97, - 35, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 192, - 131, - 1, - 82, - 128, - 97, - 35, - 192, - 131, - 1, - 81, - 97, - 35, - 128, - 132, - 1, - 81, - 8, - 97, - 35, - 224, - 131, - 1, - 82, - 128, - 97, - 35, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 36, - 0, - 131, - 1, - 82, - 128, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 36, - 32, - 131, - 1, - 82, - 128, - 97, - 18, - 128, - 131, - 1, - 81, - 97, - 18, - 96, - 132, - 1, - 81, - 8, - 97, - 36, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 160, - 131, - 1, - 82, - 128, - 97, - 36, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 36, - 32, - 132, - 1, - 81, - 8, - 97, - 36, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 36, - 224, - 131, - 1, - 82, - 128, - 97, - 36, - 224, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 37, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 37, - 64, - 131, - 1, - 82, - 128, - 97, - 37, - 64, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 37, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 160, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 37, - 192, - 131, - 1, - 82, - 128, - 97, - 37, - 192, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 37, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 97, - 38, - 64, - 131, - 1, - 82, - 128, - 97, - 38, - 64, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 38, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 38, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 38, - 224, - 131, - 1, - 82, - 128, - 97, - 38, - 224, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 39, - 0, - 131, - 1, - 82, - 128, - 97, - 39, - 0, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 39, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, - 9, - 97, - 39, - 96, - 131, - 1, - 82, - 128, - 97, - 39, - 96, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 39, - 128, - 131, - 1, - 82, - 128, - 97, - 39, - 128, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 39, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 19, - 179, - 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, - 97, - 40, - 0, - 131, - 1, - 82, - 128, - 97, - 40, - 0, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 40, - 32, - 131, - 1, - 82, - 128, - 97, - 40, - 32, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 40, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 40, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, - 9, - 97, - 40, - 160, - 131, - 1, - 82, - 128, - 97, - 40, - 160, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 40, - 192, - 131, - 1, - 82, - 128, - 97, - 40, - 192, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 40, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 41, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 40, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 64, - 131, - 1, - 82, - 128, - 97, - 41, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 38, - 192, - 132, - 1, - 81, - 8, - 97, - 41, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 128, - 131, - 1, - 82, - 128, - 97, - 41, - 128, - 131, - 1, - 81, - 97, - 36, - 0, - 132, - 1, - 81, - 8, - 97, - 41, - 160, - 131, - 1, - 82, - 128, - 97, - 41, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 41, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 224, - 132, - 1, - 81, - 9, - 97, - 41, - 224, - 131, - 1, - 82, - 128, - 97, - 41, - 224, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 42, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 42, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 9, - 0, - 132, - 1, - 81, - 9, - 97, - 42, - 64, - 131, - 1, - 82, - 128, - 97, - 42, - 64, - 131, - 1, - 81, - 97, - 19, - 128, - 132, - 1, - 81, - 8, - 97, - 42, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 42, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 42, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, - 97, - 42, - 224, - 131, - 1, - 82, - 128, - 97, - 42, - 224, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 43, - 0, - 131, - 1, - 82, - 128, - 97, - 43, - 0, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 43, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, - 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, - 9, - 97, - 43, - 96, - 131, - 1, - 82, - 128, - 97, - 43, - 96, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 43, - 128, - 131, - 1, - 82, - 128, - 97, - 43, - 128, - 131, - 1, - 81, - 97, - 19, - 128, - 132, - 1, - 81, - 8, - 97, - 43, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 43, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 0, - 131, - 1, - 82, - 128, - 97, - 44, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 42, - 192, - 132, - 1, - 81, - 8, - 97, - 44, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 64, - 131, - 1, - 82, - 128, - 97, - 44, - 64, - 131, - 1, - 81, - 97, - 41, - 192, - 132, - 1, - 81, - 8, - 97, - 44, - 96, - 131, - 1, - 82, - 128, - 97, - 44, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 44, - 128, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 44, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 192, - 131, - 1, - 82, - 128, - 97, - 44, - 192, - 131, - 1, - 81, - 97, - 44, - 128, - 132, - 1, - 81, - 8, - 97, - 44, - 224, - 131, - 1, - 82, - 128, - 97, - 44, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 45, - 0, - 131, - 1, - 82, - 97, - 9, - 192, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 45, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 45, - 32, - 132, - 1, - 81, - 8, - 97, - 45, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 96, - 131, - 1, - 82, - 128, - 97, - 45, - 96, - 131, - 1, - 81, - 97, - 45, - 0, - 132, - 1, - 81, - 8, - 97, - 45, - 128, - 131, - 1, - 82, - 128, - 97, - 45, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 45, - 160, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 45, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 192, - 131, - 1, - 81, - 97, - 10, - 64, - 132, - 1, - 81, - 8, - 97, - 46, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 45, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 97, - 1, - 0, - 9, - 97, - 46, - 64, - 131, - 1, - 82, - 128, - 97, - 46, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 46, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 96, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 46, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 192, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 8, - 97, - 46, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 46, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 0, - 131, - 1, - 82, - 128, - 97, - 47, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 46, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 64, - 131, - 1, - 82, - 128, - 97, - 47, - 64, - 131, - 1, - 81, - 97, - 45, - 160, - 132, - 1, - 81, - 8, - 97, - 47, - 96, - 131, - 1, - 82, - 128, - 97, - 47, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 47, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 47, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 192, - 131, - 1, - 82, - 128, - 97, - 47, - 192, - 131, - 1, - 81, - 97, - 47, - 128, - 132, - 1, - 81, - 8, - 97, - 47, - 224, - 131, - 1, - 82, - 128, - 97, - 47, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 48, - 0, - 131, - 1, - 82, - 128, - 97, - 36, - 192, - 131, - 1, - 81, - 97, - 47, - 160, - 132, - 1, - 81, - 9, - 97, - 48, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 48, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 96, - 131, - 1, - 81, - 97, - 48, - 0, - 132, - 1, - 81, - 8, - 97, - 48, - 128, - 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 48, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 49, - 0, - 131, - 1, - 82, - 128, - 97, - 13, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 32, - 131, - 1, - 82, - 128, - 97, - 48, - 160, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 64, - 131, - 1, - 82, - 128, - 97, - 48, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 224, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 128, - 131, - 1, - 82, - 128, - 97, - 13, - 96, - 131, - 1, - 81, - 97, - 48, - 128, - 132, - 1, - 81, - 9, - 97, - 49, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 97, - 12, - 0, - 132, - 1, - 81, - 9, - 97, - 49, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 49, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 0, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 32, - 131, - 1, - 82, - 128, - 97, - 50, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 64, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 96, - 131, - 1, - 82, - 128, - 97, - 50, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 160, - 131, - 1, - 82, - 128, - 97, - 50, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 192, - 131, - 1, - 82, - 128, - 129, - 127, - 33, - 5, - 76, - 232, - 179, - 203, - 157, - 201, - 184, - 122, - 245, - 199, - 12, - 143, - 84, - 153, - 64, - 144, - 173, - 143, - 167, - 224, - 108, - 170, - 249, - 137, - 186, - 88, - 6, - 182, - 121, - 139, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 15, - 95, - 1, - 138, - 45, - 102, - 2, - 95, - 255, - 213, - 79, - 239, - 116, - 242, - 3, - 195, - 231, - 163, - 58, - 184, - 209, - 217, - 3, - 230, - 74, - 88, - 59, - 59, - 233, - 73, - 134, - 118, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 50, - 224, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 16, - 172, - 0, - 157, - 47, - 49, - 57, - 94, - 48, - 22, - 53, - 205, - 109, - 41, - 41, - 120, - 164, - 1, - 33, - 151, - 194, - 77, - 110, - 99, - 251, - 73, - 148, - 58, - 112, - 41, - 97, - 54, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 38, - 150, - 170, - 39, - 136, - 17, - 12, - 99, - 235, - 191, - 215, - 249, - 43, - 53, - 44, - 233, - 59, - 40, - 187, - 218, - 229, - 123, - 124, - 185, - 75, - 197, - 136, - 94, - 228, - 57, - 231, - 116, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 0, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 37, - 16, - 202, - 225, - 97, - 135, - 19, - 172, - 23, - 201, - 239, - 131, - 241, - 166, - 118, - 69, - 237, - 33, - 244, - 84, - 217, - 107, - 241, - 240, - 114, - 202, - 91, - 70, - 62, - 127, - 12, - 40, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 13, - 106, - 7, - 101, - 60, - 100, - 244, - 17, - 34, - 132, - 203, - 139, - 35, - 191, - 115, - 173, - 236, - 175, - 78, - 224, - 254, - 245, - 25, - 152, - 84, - 149, - 38, - 240, - 123, - 109, - 239, - 215, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 51, - 32, - 132, - 1, - 82, - 80, - 97, - 50, - 0, - 130, - 1, - 81, - 129, - 144, - 96, - 1, - 9, - 97, - 51, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 50, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 51, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 50, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 51, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 29, - 129, - 185, - 189, - 81, - 101, - 214, - 58, - 13, - 74, - 131, - 112, - 211, - 121, - 102, - 235, - 36, - 51, - 101, - 211, - 108, - 162, - 53, - 145, - 21, - 100, - 167, - 131, - 248, - 35, - 76, - 242, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 18, - 226, - 148, - 181, - 143, - 203, - 201, - 239, - 171, - 5, - 194, - 69, - 174, - 7, - 241, - 114, - 4, - 0, - 130, - 117, - 13, - 23, - 59, - 0, - 46, - 125, - 78, - 15, - 247, - 220, - 179, - 15, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 192, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 20, - 47, - 147, - 200, - 145, - 151, - 0, - 237, - 219, - 70, - 168, - 35, - 166, - 63, - 23, - 38, - 192, - 94, - 105, - 83, - 253, - 139, - 165, - 125, - 223, - 110, - 167, - 14, - 126, - 188, - 141, - 207, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 39, - 7, - 211, - 204, - 87, - 136, - 194, - 207, - 192, - 238, - 158, - 95, - 86, - 56, - 218, - 59, - 144, - 203, - 109, - 139, - 151, - 34, - 74, - 69, - 33, - 7, - 62, - 201, - 241, - 8, - 38, - 251, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 224, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 19, - 211, - 212, - 219, - 131, - 180, - 44, - 77, - 72, - 175, - 166, - 181, - 201, - 203, - 227, - 244, - 151, - 3, - 208, - 202, - 241, - 253, - 195, - 1, - 176, - 212, - 211, - 116, - 58, - 182, - 8, - 51, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 34, - 62, - 217, - 157, - 56, - 7, - 88, - 25, - 4, - 63, - 168, - 94, - 211, - 197, - 79, - 59, - 251, - 93, - 98, - 49, - 33, - 57, - 86, - 44, - 168, - 45, - 153, - 3, - 177, - 181, - 46, - 39, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 52, - 0, - 132, - 1, - 82, - 80, - 97, - 50, - 128, - 130, - 1, - 81, - 97, - 51, - 96, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 32, - 131, - 1, - 82, - 128, - 129, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 163, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 64, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 26, - 81, - 77, - 217, - 248, - 13, - 227, - 85, - 19, - 52, - 20, - 153, - 11, - 255, - 220, - 19, - 113, - 105, - 255, - 191, - 121, - 241, - 176, - 152, - 140, - 228, - 220, - 75, - 39, - 173, - 180, - 227, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 96, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 232, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 32, - 25, - 133, - 23, - 103, - 3, - 18, - 84, - 21, - 97, - 161, - 114, - 13, - 37, - 56, - 172, - 53, - 125, - 245, - 157, - 175, - 160, - 212, - 27, - 215, - 35, - 90, - 151, - 242, - 243, - 100, - 55, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 52, - 160, - 132, - 1, - 82, - 80, - 97, - 50, - 192, - 130, - 1, - 81, - 97, - 51, - 64, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 192, - 131, - 1, - 82, - 97, - 50, - 224, - 130, - 1, - 81, - 129, - 129, - 97, - 51, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 128, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 54, - 192, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 224, - 131, - 1, - 82, - 96, - 32, - 97, - 55, - 0, - 131, - 1, - 82, - 97, - 54, - 128, - 130, - 1, - 81, - 97, - 55, - 32, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 55, - 64, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 55, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 54, - 160, - 133, - 1, - 96, - 192, - 97, - 54, - 192, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 54, - 160, - 130, - 1, - 81, - 96, - 0, - 97, - 52, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 96, - 134, - 1, - 81, - 9, - 97, - 52, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 64, - 134, - 1, - 81, - 9, - 97, - 52, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 32, - 134, - 1, - 81, - 9, - 97, - 52, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 0, - 134, - 1, - 81, - 9, - 97, - 51, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 224, - 134, - 1, - 81, - 9, - 97, - 52, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 192, - 134, - 1, - 81, - 9, - 97, - 52, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 160, - 134, - 1, - 81, - 9, - 97, - 52, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 128, - 134, - 1, - 81, - 9, - 97, - 52, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 96, - 134, - 1, - 81, - 9, - 97, - 51, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 64, - 134, - 1, - 81, - 9, - 97, - 51, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 32, - 134, - 1, - 81, - 9, - 97, - 51, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 0, - 134, - 1, - 81, - 9, - 97, - 51, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 52, - 224, - 134, - 1, - 81, - 9, - 97, - 51, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 224, - 134, - 1, - 81, - 9, - 97, - 51, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 50, - 224, - 133, - 1, - 129, - 144, - 82, - 97, - 51, - 0, - 133, - 1, - 81, - 144, - 146, - 80, - 131, - 145, - 80, - 130, - 144, - 8, - 144, - 80, - 129, - 129, - 97, - 51, - 32, - 133, - 1, - 81, - 8, - 97, - 55, - 128, - 132, - 1, - 82, - 80, - 97, - 51, - 64, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 55, - 160, - 131, - 1, - 82, - 97, - 51, - 160, - 130, - 1, - 81, - 128, - 97, - 55, - 192, - 132, - 1, - 82, - 80, - 128, - 97, - 52, - 32, - 131, - 1, - 81, - 97, - 51, - 128, - 132, - 1, - 81, - 9, - 97, - 55, - 224, - 131, - 1, - 82, - 97, - 51, - 192, - 130, - 1, - 81, - 129, - 129, - 97, - 51, - 224, - 133, - 1, - 81, - 8, - 144, - 80, - 129, - 129, - 97, - 52, - 0, - 133, - 1, - 81, - 8, - 97, - 56, - 0, - 132, - 1, - 82, - 80, - 97, - 51, - 96, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 56, - 32, - 131, - 1, - 82, - 97, - 52, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 8, - 97, - 56, - 64, - 132, - 1, - 82, - 80, - 97, - 52, - 192, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 56, - 96, - 131, - 1, - 82, - 97, - 52, - 128, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 8, - 97, - 56, - 128, - 132, - 1, - 82, - 80, - 97, - 55, - 128, - 130, - 1, - 81, - 97, - 55, - 192, - 131, - 1, - 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 56, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 56, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 56, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 57, - 0, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 57, - 64, - 131, - 1, - 82, - 96, - 32, - 97, - 57, - 96, - 131, - 1, - 82, - 96, - 32, - 97, - 57, - 128, - 131, - 1, - 82, - 97, - 57, - 0, - 130, - 1, - 81, - 97, - 57, - 160, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 57, - 192, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 57, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 57, - 32, - 133, - 1, - 96, - 192, - 97, - 57, - 64, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 57, - 32, - 130, - 1, - 81, - 96, - 0, - 97, - 56, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 224, - 134, - 1, - 81, - 9, - 97, - 56, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 56, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 192, - 134, - 1, - 81, - 9, - 97, - 56, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 56, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 160, - 134, - 1, - 81, - 9, - 97, - 56, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 55, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 55, - 128, - 134, - 1, - 81, - 9, - 97, - 55, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 55, - 128, - 133, - 1, - 82, - 80, - 80, - 97, - 55, - 192, - 130, - 1, - 81, - 97, - 55, - 160, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 58, - 0, - 131, - 1, - 82, - 128, - 97, - 56, - 0, - 131, - 1, - 81, - 97, - 55, - 224, - 132, - 1, - 81, - 9, - 97, - 58, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 64, - 131, - 1, - 81, - 97, - 56, - 32, - 132, - 1, - 81, - 9, - 97, - 58, - 64, - 131, - 1, - 82, - 128, - 97, - 56, - 128, - 131, - 1, - 81, - 97, - 56, - 96, - 132, - 1, - 81, - 9, - 97, - 58, - 96, - 131, - 1, - 82, - 97, - 10, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 58, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 224, - 131, - 1, - 82, - 97, - 10, - 224, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 61, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 96, - 131, - 1, - 82, - 128, - 97, - 50, - 224, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 0, - 134, - 1, - 81, - 97, - 6, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, - 81, - 97, - 6, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 61, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 61, - 192, - 131, - 1, - 82, - 128, - 97, - 50, - 224, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 0, - 134, - 1, - 81, - 97, - 6, - 96, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, - 81, - 97, - 6, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 224, - 132, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 62, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 62, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 64, - 131, - 1, - 82, - 128, - 97, - 62, - 32, - 131, - 1, - 81, - 97, - 61, - 192, - 132, - 1, - 81, - 8, - 97, - 62, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, - 81, - 9, - 97, - 62, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 64, - 132, - 1, - 81, - 9, - 97, - 62, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 62, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 0, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 63, - 32, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 10, - 64, - 132, - 1, - 81, - 9, - 97, - 63, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 63, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 192, - 131, - 1, - 82, - 128, - 97, - 63, - 160, - 131, - 1, - 81, - 97, - 63, - 32, - 132, - 1, - 81, - 8, - 97, - 63, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 9, - 97, - 64, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, - 82, - 128, - 97, - 58, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 64, - 96, - 131, - 1, - 82, - 128, - 97, - 64, - 64, - 131, - 1, - 81, - 97, - 63, - 224, - 132, - 1, - 81, - 8, - 97, - 64, - 128, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 9, - 97, - 64, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 224, - 131, - 1, - 82, - 128, - 97, - 58, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 65, - 0, - 131, - 1, - 82, - 128, - 97, - 64, - 224, - 131, - 1, - 81, - 97, - 64, - 128, - 132, - 1, - 81, - 8, - 97, - 65, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 9, - 97, - 65, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 65, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, - 82, - 128, - 97, - 58, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 65, - 160, - 131, - 1, - 82, - 128, - 97, - 65, - 128, - 131, - 1, - 81, - 97, - 65, - 32, - 132, - 1, - 81, - 8, - 97, - 65, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, - 81, - 9, - 97, - 65, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, - 82, - 128, - 97, - 58, - 224, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 66, - 64, - 131, - 1, - 82, - 128, - 97, - 66, - 32, - 131, - 1, - 81, - 97, - 65, - 192, - 132, - 1, - 81, - 8, - 97, - 66, - 96, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 192, - 131, - 1, - 82, - 128, - 97, - 59, - 0, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 66, - 224, - 131, - 1, - 82, - 128, - 97, - 66, - 192, - 131, - 1, - 81, - 97, - 66, - 96, - 132, - 1, - 81, - 8, - 97, - 67, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 128, - 132, - 1, - 81, - 9, - 97, - 67, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 67, - 96, - 131, - 1, - 82, - 128, - 97, - 59, - 32, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 67, - 128, - 131, - 1, - 82, - 128, - 97, - 67, - 96, - 131, - 1, - 81, - 97, - 67, - 0, - 132, - 1, - 81, - 8, - 97, - 67, - 160, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 160, - 132, - 1, - 81, - 9, - 97, - 67, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 0, - 131, - 1, - 82, - 128, - 97, - 59, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 32, - 131, - 1, - 82, - 128, - 97, - 68, - 0, - 131, - 1, - 81, - 97, - 67, - 160, - 132, - 1, - 81, - 8, - 97, - 68, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 68, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, - 82, - 128, - 97, - 59, - 96, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 192, - 131, - 1, - 82, - 128, - 97, - 68, - 160, - 131, - 1, - 81, - 97, - 68, - 64, - 132, - 1, - 81, - 8, - 97, - 68, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 224, - 132, - 1, - 81, - 9, - 97, - 69, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 64, - 131, - 1, - 82, - 128, - 97, - 59, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 69, - 96, - 131, - 1, - 82, - 128, - 97, - 69, - 64, - 131, - 1, - 81, - 97, - 68, - 224, - 132, - 1, - 81, - 8, - 97, - 69, - 128, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 69, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, - 82, - 128, - 97, - 59, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 70, - 0, - 131, - 1, - 82, - 128, - 97, - 69, - 224, - 131, - 1, - 81, - 97, - 69, - 128, - 132, - 1, - 81, - 8, - 97, - 70, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 70, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 70, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, - 82, - 128, - 97, - 59, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 70, - 160, - 131, - 1, - 82, - 128, - 97, - 70, - 128, - 131, - 1, - 81, - 97, - 70, - 32, - 132, - 1, - 81, - 8, - 97, - 70, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 32, - 131, - 1, - 82, - 128, - 97, - 59, - 224, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 71, - 64, - 131, - 1, - 82, - 128, - 97, - 71, - 32, - 131, - 1, - 81, - 97, - 70, - 192, - 132, - 1, - 81, - 8, - 97, - 71, - 96, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 71, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 192, - 131, - 1, - 82, - 128, - 97, - 60, - 0, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 71, - 224, - 131, - 1, - 82, - 128, - 97, - 71, - 192, - 131, - 1, - 81, - 97, - 71, - 96, - 132, - 1, - 81, - 8, - 97, - 72, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 72, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 72, - 96, - 131, - 1, - 82, - 128, - 97, - 60, - 32, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 128, - 131, - 1, - 82, - 128, - 97, - 72, - 96, - 131, - 1, - 81, - 97, - 72, - 0, - 132, - 1, - 81, - 8, - 97, - 72, - 160, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 0, - 131, - 1, - 82, - 128, - 97, - 60, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 32, - 131, - 1, - 82, - 128, - 97, - 73, - 0, - 131, - 1, - 81, - 97, - 72, - 160, - 132, - 1, - 81, - 8, - 97, - 73, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 224, - 132, - 1, - 81, - 9, - 97, - 73, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 73, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 160, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 192, - 131, - 1, - 82, - 128, - 97, - 73, - 160, - 131, - 1, - 81, - 97, - 73, - 64, - 132, - 1, - 81, - 8, - 97, - 73, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 9, - 0, - 132, - 1, - 81, - 9, - 97, - 74, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 74, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 74, - 64, - 131, - 1, - 82, - 128, - 97, - 60, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 74, - 96, - 131, - 1, - 82, - 128, - 97, - 74, - 64, - 131, - 1, - 81, - 97, - 73, - 224, - 132, - 1, - 81, - 8, - 97, - 74, - 128, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 32, - 132, - 1, - 81, - 9, - 97, - 74, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 64, - 132, - 1, - 81, - 9, - 97, - 74, - 192, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 96, - 132, - 1, - 81, - 9, - 97, - 74, - 224, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 128, - 132, - 1, - 81, - 9, - 97, - 75, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 49, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 75, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 75, - 96, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 75, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 160, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 192, - 132, - 1, - 81, - 9, - 97, - 75, - 192, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 224, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 75, - 0, - 132, - 1, - 81, - 9, - 97, - 76, - 0, - 131, - 1, - 82, - 128, - 97, - 75, - 96, - 131, - 1, - 81, - 97, - 74, - 128, - 132, - 1, - 81, - 8, - 97, - 76, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 76, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 76, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 76, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 76, - 160, - 131, - 1, - 82, - 128, - 97, - 76, - 128, - 131, - 1, - 81, - 97, - 76, - 32, - 132, - 1, - 81, - 8, - 97, - 76, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 76, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 63, - 64, - 132, - 1, - 81, - 9, - 97, - 77, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 63, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 64, - 96, - 132, - 1, - 81, - 9, - 97, - 77, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 65, - 0, - 132, - 1, - 81, - 9, - 97, - 77, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 65, - 160, - 132, - 1, - 81, - 9, - 97, - 77, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 66, - 64, - 132, - 1, - 81, - 9, - 97, - 77, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 66, - 224, - 132, - 1, - 81, - 9, - 97, - 77, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 67, - 128, - 132, - 1, - 81, - 9, - 97, - 77, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 68, - 32, - 132, - 1, - 81, - 9, - 97, - 78, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 68, - 192, - 132, - 1, - 81, - 9, - 97, - 78, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 69, - 96, - 132, - 1, - 81, - 9, - 97, - 78, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 70, - 0, - 132, - 1, - 81, - 9, - 97, - 78, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 70, - 160, - 132, - 1, - 81, - 9, - 97, - 78, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 71, - 64, - 132, - 1, - 81, - 9, - 97, - 78, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 71, - 224, - 132, - 1, - 81, - 9, - 97, - 78, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 72, - 128, - 132, - 1, - 81, - 9, - 97, - 78, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 73, - 32, - 132, - 1, - 81, - 9, - 97, - 79, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 73, - 192, - 132, - 1, - 81, - 9, - 97, - 79, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 74, - 96, - 132, - 1, - 81, - 9, - 97, - 79, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 128, - 132, - 1, - 81, - 9, - 97, - 79, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 160, - 132, - 1, - 81, - 9, - 97, - 79, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 192, - 132, - 1, - 81, - 9, - 97, - 79, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 224, - 132, - 1, - 81, - 9, - 97, - 79, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 76, - 0, - 132, - 1, - 81, - 9, - 97, - 79, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 76, - 160, - 132, - 1, - 81, - 9, - 97, - 80, - 0, - 131, - 1, - 82, - 128, - 97, - 76, - 224, - 131, - 1, - 81, - 97, - 62, - 128, - 132, - 1, - 81, - 8, - 97, - 80, - 32, - 131, - 1, - 82, - 128, - 97, - 55, - 224, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 80, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 192, - 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 224, - 134, - 1, - 81, - 97, - 9, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 52, - 0, - 134, - 1, - 81, - 97, - 9, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 80, - 96, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 80, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 80, - 128, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 80, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 80, - 64, - 132, - 1, - 81, - 9, - 97, - 80, - 192, - 131, - 1, - 82, - 128, - 97, - 61, - 0, - 131, - 1, - 81, - 97, - 80, - 160, - 132, - 1, - 81, - 9, - 97, - 80, - 224, - 131, - 1, - 82, - 128, - 97, - 61, - 0, - 131, - 1, - 81, - 97, - 80, - 192, - 132, - 1, - 81, - 9, - 97, - 81, - 0, - 131, - 1, - 82, - 128, - 97, - 80, - 224, - 131, - 1, - 81, - 97, - 80, - 32, - 132, - 1, - 81, - 8, - 97, - 81, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 81, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 96, - 134, - 1, - 81, - 97, - 9, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 81, - 96, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 81, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 81, - 128, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 81, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 81, - 64, - 132, - 1, - 81, - 9, - 97, - 81, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 192, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 96, - 134, - 1, - 81, - 97, - 9, - 224, - 135, - 1, - 81, - 9, - 8, - 97, - 81, - 224, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 82, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 82, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 81, - 64, - 132, - 1, - 81, - 9, - 97, - 82, - 64, - 131, - 1, - 82, - 128, - 97, - 82, - 32, - 131, - 1, - 81, - 97, - 81, - 160, - 132, - 1, - 81, - 8, - 97, - 82, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 61, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 82, - 128, - 131, - 1, - 82, - 128, - 97, - 61, - 32, - 131, - 1, - 81, - 97, - 81, - 192, - 132, - 1, - 81, - 9, - 97, - 82, - 160, - 131, - 1, - 82, - 128, - 97, - 61, - 32, - 131, - 1, - 81, - 97, - 82, - 64, - 132, - 1, - 81, - 9, - 97, - 82, - 192, - 131, - 1, - 82, - 128, - 97, - 82, - 128, - 131, - 1, - 81, - 97, - 81, - 32, - 132, - 1, - 81, - 8, - 97, - 82, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 83, - 0, - 131, - 1, - 82, - 128, - 97, - 52, - 128, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 160, - 134, - 1, - 81, - 97, - 10, - 32, - 135, - 1, - 81, - 9, - 8, - 97, - 83, - 32, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 96, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 83, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 83, - 64, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 83, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 83, - 0, - 132, - 1, - 81, - 9, - 97, - 83, - 128, - 131, - 1, - 82, - 128, - 97, - 61, - 64, - 131, - 1, - 81, - 97, - 83, - 96, - 132, - 1, - 81, - 9, - 97, - 83, - 160, - 131, - 1, - 82, - 128, - 97, - 61, - 64, - 131, - 1, - 81, - 97, - 83, - 128, - 132, - 1, - 81, - 9, - 97, - 83, - 192, - 131, - 1, - 82, - 128, - 97, - 83, - 160, - 131, - 1, - 81, - 97, - 82, - 224, - 132, - 1, - 81, - 8, - 97, - 83, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 84, - 0, - 131, - 1, - 82, - 128, - 97, - 11, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 84, - 32, - 131, - 1, - 82, - 96, - 1, - 97, - 84, - 64, - 131, - 1, - 129, - 129, - 82, - 96, - 2, - 97, - 84, - 96, - 133, - 1, - 82, - 97, - 83, - 224, - 132, - 1, - 81, - 97, - 84, - 128, - 133, - 1, - 82, - 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 64, - 130, - 1, - 81, - 97, - 84, - 160, - 131, - 1, - 82, - 97, - 84, - 96, - 130, - 1, - 81, - 97, - 84, - 192, - 131, - 1, - 82, - 96, - 160, - 130, - 1, - 81, - 97, - 84, - 224, - 131, - 1, - 82, - 96, - 192, - 130, - 1, - 81, - 97, - 85, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 160, - 133, - 1, - 96, - 128, - 97, - 84, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 224, - 130, - 1, - 81, - 97, - 85, - 32, - 131, - 1, - 82, - 97, - 1, - 0, - 130, - 1, - 81, - 97, - 85, - 64, - 131, - 1, - 82, - 97, - 62, - 160, - 130, - 1, - 81, - 97, - 85, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 32, - 133, - 1, - 96, - 96, - 97, - 85, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 160, - 130, - 1, - 81, - 97, - 85, - 128, - 131, - 1, - 82, - 97, - 84, - 192, - 130, - 1, - 81, - 97, - 85, - 160, - 131, - 1, - 82, - 97, - 85, - 32, - 130, - 1, - 81, - 97, - 85, - 192, - 131, - 1, - 82, - 97, - 85, - 64, - 130, - 1, - 81, - 97, - 85, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 128, - 133, - 1, - 96, - 128, - 97, - 85, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 32, - 130, - 1, - 81, - 97, - 86, - 0, - 131, - 1, - 82, - 97, - 1, - 64, - 130, - 1, - 81, - 97, - 86, - 32, - 131, - 1, - 82, - 97, - 77, - 0, - 130, - 1, - 81, - 97, - 86, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 0, - 133, - 1, - 96, - 96, - 97, - 86, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 85, - 128, - 130, - 1, - 81, - 97, - 86, - 96, - 131, - 1, - 82, - 97, - 85, - 160, - 130, - 1, - 81, - 97, - 86, - 128, - 131, - 1, - 82, - 97, - 86, - 0, - 130, - 1, - 81, - 97, - 86, - 160, - 131, - 1, - 82, - 97, - 86, - 32, - 130, - 1, - 81, - 97, - 86, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 96, - 133, - 1, - 96, - 128, - 97, - 86, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 2, - 0, - 130, - 1, - 81, - 97, - 86, - 224, - 131, - 1, - 82, - 97, - 2, - 32, - 130, - 1, - 81, - 97, - 87, - 0, - 131, - 1, - 82, - 97, - 77, - 32, - 130, - 1, - 81, - 97, - 87, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 224, - 133, - 1, - 96, - 96, - 97, - 86, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 86, - 96, - 130, - 1, - 81, - 97, - 87, - 64, - 131, - 1, - 82, - 97, - 86, - 128, - 130, - 1, - 81, - 97, - 87, - 96, - 131, - 1, - 82, - 97, - 86, - 224, - 130, - 1, - 81, - 97, - 87, - 128, - 131, - 1, - 82, - 97, - 87, - 0, - 130, - 1, - 81, - 97, - 87, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 64, - 133, - 1, - 96, - 128, - 97, - 87, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 155, - 18, - 230, - 83, - 153, - 220, - 234, - 63, - 30, - 12, - 224, - 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, - 144, - 97, - 87, - 192, - 131, - 1, - 82, - 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, - 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, - 82, - 49, - 147, - 95, - 154, - 149, - 97, - 87, - 224, - 131, - 1, - 82, - 97, - 77, - 64, - 130, - 1, - 81, - 97, - 88, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 192, - 133, - 1, - 96, - 96, - 97, - 87, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, - 81, - 97, - 88, - 32, - 131, - 1, - 82, - 97, - 87, - 96, - 130, - 1, - 81, - 97, - 88, - 64, - 131, - 1, - 82, - 97, - 87, - 192, - 130, - 1, - 81, - 97, - 88, - 96, - 131, - 1, - 82, - 97, - 87, - 224, - 130, - 1, - 81, - 97, - 88, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 32, - 133, - 1, - 96, - 128, - 97, - 88, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, - 97, - 88, - 160, - 131, - 1, - 82, - 127, - 47, - 56, - 81, - 30, - 83, - 104, - 128, - 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, - 220, - 70, - 174, - 157, - 149, - 34, - 253, - 60, - 224, - 152, - 182, - 97, - 88, - 192, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 88, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 160, - 133, - 1, - 96, - 96, - 97, - 88, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 88, - 32, - 130, - 1, - 81, - 97, - 89, - 0, - 131, - 1, - 82, - 97, - 88, - 64, - 130, - 1, - 81, - 97, - 89, - 32, - 131, - 1, - 82, - 97, - 88, - 160, - 130, - 1, - 81, - 97, - 89, - 64, - 131, - 1, - 82, - 97, - 88, - 192, - 130, - 1, - 81, - 97, - 89, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 0, - 133, - 1, - 96, - 128, - 97, - 89, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, - 81, - 123, - 31, - 35, - 228, - 64, - 172, - 185, - 231, - 52, - 89, - 56, - 255, - 91, - 36, - 90, - 64, - 62, - 97, - 89, - 128, - 131, - 1, - 82, - 127, - 28, - 49, - 164, - 45, - 125, - 163, - 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, - 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, - 97, - 89, - 160, - 131, - 1, - 82, - 97, - 77, - 128, - 130, - 1, - 81, - 97, - 89, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 128, - 133, - 1, - 96, - 96, - 97, - 89, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 0, - 130, - 1, - 81, - 97, - 89, - 224, - 131, - 1, - 82, - 97, - 89, - 32, - 130, - 1, - 81, - 97, - 90, - 0, - 131, - 1, - 82, - 97, - 89, - 128, - 130, - 1, - 81, - 97, - 90, - 32, - 131, - 1, - 82, - 97, - 89, - 160, - 130, - 1, - 81, - 97, - 90, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 224, - 133, - 1, - 96, - 128, - 97, - 89, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, - 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, - 171, - 244, - 150, - 175, - 8, - 153, - 237, - 67, - 136, - 83, - 34, - 125, - 208, - 86, - 97, - 90, - 96, - 131, - 1, - 82, - 127, - 44, - 250, - 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, - 164, - 19, - 40, - 124, - 97, - 90, - 128, - 131, - 1, - 82, - 97, - 77, - 160, - 130, - 1, - 81, - 97, - 90, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 96, - 133, - 1, - 96, - 96, - 97, - 90, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 224, - 130, - 1, - 81, - 97, - 90, - 192, - 131, - 1, - 82, - 97, - 90, - 0, - 130, - 1, - 81, - 97, - 90, - 224, - 131, - 1, - 82, - 97, - 90, - 96, - 130, - 1, - 81, - 97, - 91, - 0, - 131, - 1, - 82, - 97, - 90, - 128, - 130, - 1, - 81, - 97, - 91, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 192, - 133, - 1, - 96, - 128, - 97, - 90, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, - 206, - 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, - 97, - 91, - 64, - 131, - 1, - 82, - 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, - 45, - 114, - 246, - 147, - 102, - 25, - 151, - 72, - 10, - 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, - 97, - 91, - 96, - 131, - 1, - 82, - 97, - 77, - 192, - 130, - 1, - 81, - 97, - 91, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 64, - 133, - 1, - 96, - 96, - 97, - 91, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 90, - 192, - 130, - 1, - 81, - 97, - 91, - 160, - 131, - 1, - 82, - 97, - 90, - 224, - 130, - 1, - 81, - 97, - 91, - 192, - 131, - 1, - 82, - 97, - 91, - 64, - 130, - 1, - 81, - 97, - 91, - 224, - 131, - 1, - 82, - 97, - 91, - 96, - 130, - 1, - 81, - 97, - 92, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 160, - 133, - 1, - 96, - 128, - 97, - 91, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, - 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, - 14, - 194, - 168, - 97, - 92, - 32, - 131, - 1, - 82, - 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, - 51, - 111, - 93, - 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, - 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, - 97, - 92, - 64, - 131, - 1, - 82, - 97, - 77, - 224, - 130, - 1, - 81, - 97, - 92, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 32, - 133, - 1, - 96, - 96, - 97, - 92, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 91, - 160, - 130, - 1, - 81, - 97, - 92, - 128, - 131, - 1, - 82, - 97, - 91, - 192, - 130, - 1, - 81, - 97, - 92, - 160, - 131, - 1, - 82, - 97, - 92, - 32, - 130, - 1, - 81, - 97, - 92, - 192, - 131, - 1, - 82, - 97, - 92, - 64, - 130, - 1, - 81, - 97, - 92, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 128, - 133, - 1, - 96, - 128, - 97, - 92, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 28, - 110, - 35, - 67, - 51, - 55, - 131, - 180, - 244, - 138, - 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, - 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, - 229, - 213, - 97, - 93, - 0, - 131, - 1, - 82, - 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, - 32, - 56, - 164, - 212, - 2, - 95, - 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, - 97, - 93, - 32, - 131, - 1, - 82, - 97, - 78, - 0, - 130, - 1, - 81, - 97, - 93, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 0, - 133, - 1, - 96, - 96, - 97, - 93, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 92, - 128, - 130, - 1, - 81, - 97, - 93, - 96, - 131, - 1, - 82, - 97, - 92, - 160, - 130, - 1, - 81, - 97, - 93, - 128, - 131, - 1, - 82, - 97, - 93, - 0, - 130, - 1, - 81, - 97, - 93, - 160, - 131, - 1, - 82, - 97, - 93, - 32, - 130, - 1, - 81, - 97, - 93, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 96, - 133, - 1, - 96, - 128, - 97, - 93, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 32, - 59, - 33, - 166, - 72, - 251, - 251, - 150, - 69, - 150, - 64, - 187, - 197, - 180, - 24, - 82, - 221, - 30, - 252, - 18, - 9, - 200, - 155, - 99, - 91, - 166, - 56, - 220, - 185, - 41, - 218, - 107, - 97, - 93, - 224, - 131, - 1, - 82, - 127, - 4, - 231, - 0, - 47, - 6, - 242, - 9, - 26, - 68, - 175, - 205, - 49, - 30, - 147, - 194, - 47, - 70, - 221, - 159, - 50, - 7, - 181, - 188, - 195, - 79, - 12, - 167, - 101, - 32, - 152, - 240, - 151, - 97, - 94, - 0, - 131, - 1, - 82, - 97, - 78, - 32, - 130, - 1, - 81, - 97, - 94, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 224, - 133, - 1, - 96, - 96, - 97, - 93, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 93, - 96, - 130, - 1, - 81, - 97, - 94, - 64, - 131, - 1, - 82, - 97, - 93, - 128, - 130, - 1, - 81, - 97, - 94, - 96, - 131, - 1, - 82, - 97, - 93, - 224, - 130, - 1, - 81, - 97, - 94, - 128, - 131, - 1, - 82, - 97, - 94, - 0, - 130, - 1, - 81, - 97, - 94, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 64, - 133, - 1, - 96, - 128, - 97, - 94, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 32, - 171, - 116, - 144, - 180, - 47, - 63, - 123, - 43, - 11, - 190, - 96, - 26, - 9, - 215, - 46, - 233, - 63, - 146, - 72, - 1, - 213, - 151, - 244, - 140, - 242, - 212, - 67, - 117, - 29, - 95, - 145, - 97, - 94, - 192, - 131, - 1, - 82, - 127, - 43, - 202, - 47, - 23, - 98, - 148, - 106, - 5, - 251, - 22, - 50, - 85, - 12, - 108, - 177, - 44, - 2, - 209, - 141, - 155, - 238, - 91, - 221, - 66, - 18, - 202, - 115, - 66, - 136, - 135, - 32, - 253, - 97, - 94, - 224, - 131, - 1, - 82, - 97, - 78, - 64, - 130, - 1, - 81, - 97, - 95, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 192, - 133, - 1, - 96, - 96, - 97, - 94, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, - 81, - 97, - 95, - 32, - 131, - 1, - 82, - 97, - 94, - 96, - 130, - 1, - 81, - 97, - 95, - 64, - 131, - 1, - 82, - 97, - 94, - 192, - 130, - 1, - 81, - 97, - 95, - 96, - 131, - 1, - 82, - 97, - 94, - 224, - 130, - 1, - 81, - 97, - 95, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 32, - 133, - 1, - 96, - 128, - 97, - 95, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 9, - 227, - 48, - 50, - 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, - 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, - 170, - 97, - 95, - 160, - 131, - 1, - 82, - 127, - 19, - 206, - 146, - 40, - 60, - 198, - 246, - 72, - 189, - 218, - 134, - 24, - 45, - 145, - 133, - 42, - 171, - 92, - 96, - 136, - 171, - 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, - 97, - 95, - 192, - 131, - 1, - 82, - 97, - 78, - 96, - 130, - 1, - 81, - 97, - 95, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 160, - 133, - 1, - 96, - 96, - 97, - 95, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 95, - 32, - 130, - 1, - 81, - 97, - 96, - 0, - 131, - 1, - 82, - 97, - 95, - 64, - 130, - 1, - 81, - 97, - 96, - 32, - 131, - 1, - 82, - 97, - 95, - 160, - 130, - 1, - 81, - 97, - 96, - 64, - 131, - 1, - 82, - 97, - 95, - 192, - 130, - 1, - 81, - 97, - 96, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 0, - 133, - 1, - 96, - 128, - 97, - 96, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 8, - 165, - 3, - 231, - 161, - 102, - 132, - 168, - 25, - 145, - 219, - 252, - 94, - 200, - 76, - 159, - 75, - 15, - 122, - 80, - 109, - 223, - 38, - 182, - 125, - 48, - 94, - 191, - 192, - 248, - 23, - 67, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 8, - 162, - 216, - 225, - 118, - 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, - 237, - 101, - 161, - 230, - 119, - 167, - 134, - 205, - 216, - 188, - 159, - 148, - 123, - 54, - 19, - 28, - 97, - 96, - 160, - 131, - 1, - 82, - 97, - 78, - 128, - 130, - 1, - 81, - 97, - 96, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 128, - 133, - 1, - 96, - 96, - 97, - 96, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 0, - 130, - 1, - 81, - 97, - 96, - 224, - 131, - 1, - 82, - 97, - 96, - 32, - 130, - 1, - 81, - 97, - 97, - 0, - 131, - 1, - 82, - 97, - 96, - 128, - 130, - 1, - 81, - 97, - 97, - 32, - 131, - 1, - 82, - 97, - 96, - 160, - 130, - 1, - 81, - 97, - 97, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 224, - 133, - 1, - 96, - 128, - 97, - 96, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 37, - 99, - 43, - 200, - 1, - 44, - 108, - 188, - 109, - 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, - 1, - 202, - 91, - 87, - 230, - 26, - 31, - 254, - 97, - 97, - 96, - 131, - 1, - 82, - 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, - 48, - 61, - 160, - 245, - 102, - 78, - 63, - 98, - 13, - 214, - 184, - 81, - 167, - 17, - 120, - 23, - 4, - 41, - 47, - 209, - 26, - 97, - 97, - 128, - 131, - 1, - 82, - 97, - 78, - 160, - 130, - 1, - 81, - 97, - 97, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 96, - 133, - 1, - 96, - 96, - 97, - 97, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 224, - 130, - 1, - 81, - 97, - 97, - 192, - 131, - 1, - 82, - 97, - 97, - 0, - 130, - 1, - 81, - 97, - 97, - 224, - 131, - 1, - 82, - 97, - 97, - 96, - 130, - 1, - 81, - 97, - 98, - 0, - 131, - 1, - 82, - 97, - 97, - 128, - 130, - 1, - 81, - 97, - 98, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 192, - 133, - 1, - 96, - 128, - 97, - 97, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, - 32, - 68, - 228, - 194, - 57, - 252, - 194, - 158, - 179, - 168, - 29, - 57, - 46, - 27, - 68, - 173, - 97, - 98, - 64, - 131, - 1, - 82, - 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, - 220, - 212, - 99, - 41, - 231, - 42, - 4, - 225, - 96, - 86, - 222, - 163, - 213, - 161, - 126, - 49, - 41, - 26, - 153, - 96, - 97, - 98, - 96, - 131, - 1, - 82, - 97, - 78, - 192, - 130, - 1, - 81, - 97, - 98, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 64, - 133, - 1, - 96, - 96, - 97, - 98, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 97, - 192, - 130, - 1, - 81, - 97, - 98, - 160, - 131, - 1, - 82, - 97, - 97, - 224, - 130, - 1, - 81, - 97, - 98, - 192, - 131, - 1, - 82, - 97, - 98, - 64, - 130, - 1, - 81, - 97, - 98, - 224, - 131, - 1, - 82, - 97, - 98, - 96, - 130, - 1, - 81, - 97, - 99, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 160, - 133, - 1, - 96, - 128, - 97, - 98, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, - 13, - 34, - 97, - 99, - 32, - 131, - 1, - 82, - 127, - 14, - 233, - 187, - 223, - 206, - 147, - 129, - 94, - 121, - 170, - 191, - 197, - 236, - 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, - 97, - 99, - 64, - 131, - 1, - 82, - 97, - 78, - 224, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, - 128, - 131, - 1, - 82, - 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, - 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, - 82, - 17, - 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 100, - 0, - 131, - 1, - 82, - 127, - 2, - 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, - 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 79, - 0, - 130, - 1, - 81, - 97, - 100, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 0, - 133, - 1, - 96, - 96, - 97, - 100, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 99, - 128, - 130, - 1, - 81, - 97, - 100, - 96, - 131, - 1, - 82, - 97, - 99, - 160, - 130, - 1, - 81, - 97, - 100, - 128, - 131, - 1, - 82, - 97, - 100, - 0, - 130, - 1, - 81, - 97, - 100, - 160, - 131, - 1, - 82, - 97, - 100, - 32, - 130, - 1, - 81, - 97, - 100, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 96, - 133, - 1, - 96, - 128, - 97, - 100, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, - 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, - 220, - 70, - 186, - 133, - 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, - 97, - 100, - 224, - 131, - 1, - 82, - 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, - 214, - 190, - 189, - 218, - 53, - 162, - 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, - 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, - 97, - 101, - 0, - 131, - 1, - 82, - 97, - 79, - 32, - 130, - 1, - 81, - 97, - 101, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 224, - 133, - 1, - 96, - 96, - 97, - 100, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 100, - 96, - 130, - 1, - 81, - 97, - 101, - 64, - 131, - 1, - 82, - 97, - 100, - 128, - 130, - 1, - 81, - 97, - 101, - 96, - 131, - 1, - 82, - 97, - 100, - 224, - 130, - 1, - 81, - 97, - 101, - 128, - 131, - 1, - 82, - 97, - 101, - 0, - 130, - 1, - 81, - 97, - 101, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 64, - 133, - 1, - 96, - 128, - 97, - 101, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 29, - 219, - 249, - 28, - 238, - 237, - 136, - 168, - 198, - 110, - 155, - 248, - 208, - 137, - 179, - 9, - 141, - 192, - 131, - 241, - 87, - 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, - 97, - 101, - 192, - 131, - 1, - 82, - 127, - 10, - 180, - 232, - 11, - 0, - 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, - 18, - 126, - 32, - 0, - 87, - 44, - 3, - 68, - 194, - 131, - 138, - 238, - 175, - 37, - 30, - 179, - 145, - 97, - 101, - 224, - 131, - 1, - 82, - 97, - 79, - 64, - 130, - 1, - 81, - 97, - 102, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 192, - 133, - 1, - 96, - 96, - 97, - 101, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, - 1, - 81, - 97, - 102, - 32, - 131, - 1, - 82, - 97, - 101, - 96, - 130, - 1, - 81, - 97, - 102, - 64, - 131, - 1, - 82, - 97, - 101, - 192, - 130, - 1, - 81, - 97, - 102, - 96, - 131, - 1, - 82, - 97, - 101, - 224, - 130, - 1, - 81, - 97, - 102, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 32, - 133, - 1, - 96, - 128, - 97, - 102, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 96, - 130, - 1, - 81, - 97, - 102, - 160, - 131, - 1, - 82, - 97, - 4, - 128, - 130, - 1, - 81, - 97, - 102, - 192, - 131, - 1, - 82, - 97, - 79, - 96, - 130, - 1, - 81, - 97, - 102, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 160, - 133, - 1, - 96, - 96, - 97, - 102, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 102, - 32, - 130, - 1, - 81, - 97, - 103, - 0, - 131, - 1, - 82, - 97, - 102, - 64, - 130, - 1, - 81, - 97, - 103, - 32, - 131, - 1, - 82, - 97, - 102, - 160, - 130, - 1, - 81, - 97, - 103, - 64, - 131, - 1, - 82, - 97, - 102, - 192, - 130, - 1, - 81, - 97, - 103, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 0, - 133, - 1, - 96, - 128, - 97, - 103, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 160, - 130, - 1, - 81, - 97, - 103, - 128, - 131, - 1, - 82, - 97, - 4, - 192, - 130, - 1, - 81, - 97, - 103, - 160, - 131, - 1, - 82, - 97, - 79, - 128, - 130, - 1, - 81, - 97, - 103, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 133, - 1, - 96, - 96, - 97, - 103, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 0, - 130, - 1, - 81, - 97, - 103, - 224, - 131, - 1, - 82, - 97, - 103, - 32, - 130, - 1, - 81, - 97, - 104, - 0, - 131, - 1, - 82, - 97, - 103, - 128, - 130, - 1, - 81, - 97, - 104, - 32, - 131, - 1, - 82, - 97, - 103, - 160, - 130, - 1, - 81, - 97, - 104, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 224, - 133, - 1, - 96, - 128, - 97, - 103, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 224, - 130, - 1, - 81, - 97, - 104, - 96, - 131, - 1, - 82, - 97, - 5, - 0, - 130, - 1, - 81, - 97, - 104, - 128, - 131, - 1, - 82, - 97, - 79, - 160, - 130, - 1, - 81, - 97, - 104, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 96, - 133, - 1, - 96, - 96, - 97, - 104, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 224, - 130, - 1, - 81, - 97, - 104, - 192, - 131, - 1, - 82, - 97, - 104, - 0, - 130, - 1, - 81, - 97, - 104, - 224, - 131, - 1, - 82, - 97, - 104, - 96, - 130, - 1, - 81, - 97, - 105, - 0, - 131, - 1, - 82, - 97, - 104, - 128, - 130, - 1, - 81, - 97, - 105, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 192, - 133, - 1, - 96, - 128, - 97, - 104, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 32, - 130, - 1, - 81, - 97, - 105, - 64, - 131, - 1, - 82, - 97, - 5, - 64, - 130, - 1, - 81, - 97, - 105, - 96, - 131, - 1, - 82, - 97, - 79, - 192, - 130, - 1, - 81, - 97, - 105, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 64, - 133, - 1, - 96, - 96, - 97, - 105, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 104, - 192, - 130, - 1, - 81, - 97, - 105, - 160, - 131, - 1, - 82, - 97, - 104, - 224, - 130, - 1, - 81, - 97, - 105, - 192, - 131, - 1, - 82, - 97, - 105, - 64, - 130, - 1, - 81, - 97, - 105, - 224, - 131, - 1, - 82, - 97, - 105, - 96, - 130, - 1, - 81, - 97, - 106, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 160, - 133, - 1, - 96, - 128, - 97, - 105, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 96, - 130, - 1, - 81, - 97, - 106, - 32, - 131, - 1, - 82, - 97, - 5, - 128, - 130, - 1, - 81, - 97, - 106, - 64, - 131, - 1, - 82, - 97, - 79, - 224, - 130, - 1, - 81, - 97, - 106, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 32, - 133, - 1, - 96, - 96, - 97, - 106, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 105, - 160, - 130, - 1, - 81, - 97, - 106, - 128, - 131, - 1, - 82, - 97, - 105, - 192, - 130, - 1, - 81, - 97, - 106, - 160, - 131, - 1, - 82, - 97, - 106, - 32, - 130, - 1, - 81, - 97, - 106, - 192, - 131, - 1, - 82, - 97, - 106, - 64, - 130, - 1, - 81, - 97, - 106, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 128, - 133, - 1, - 96, - 128, - 97, - 106, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 192, - 130, - 1, - 81, - 97, - 107, - 0, - 131, - 1, - 82, - 97, - 3, - 224, - 130, - 1, - 81, - 97, - 107, - 32, - 131, - 1, - 82, - 97, - 80, - 0, - 130, - 1, - 81, - 97, - 107, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 0, - 133, - 1, - 96, - 96, - 97, - 107, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 106, - 128, - 130, - 1, - 81, - 97, - 107, - 96, - 131, - 1, - 82, - 97, - 106, - 160, - 130, - 1, - 81, - 97, - 107, - 128, - 131, - 1, - 82, - 97, - 107, - 0, - 130, - 1, - 81, - 97, - 107, - 160, - 131, - 1, - 82, - 97, - 107, - 32, - 130, - 1, - 81, - 97, - 107, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 96, - 133, - 1, - 96, - 128, - 97, - 107, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 0, - 130, - 1, - 81, - 97, - 107, - 224, - 131, - 1, - 82, - 97, - 3, - 32, - 130, - 1, - 81, - 97, - 108, - 0, - 131, - 1, - 82, - 97, - 81, - 0, - 130, - 1, - 81, - 97, - 108, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 224, - 133, - 1, - 96, - 96, - 97, - 107, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 107, - 96, - 130, - 1, - 81, - 97, - 108, - 64, - 131, - 1, - 82, - 97, - 107, - 128, - 130, - 1, - 81, - 97, - 108, - 96, - 131, - 1, - 82, - 97, - 107, - 224, - 130, - 1, - 81, - 97, - 108, - 128, - 131, - 1, - 82, - 97, - 108, - 0, - 130, - 1, - 81, - 97, - 108, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 64, - 133, - 1, - 96, - 128, - 97, - 108, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 64, - 130, - 1, - 81, - 97, - 108, - 192, - 131, - 1, - 82, - 97, - 3, - 96, - 130, - 1, - 81, - 97, - 108, - 224, - 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, - 81, - 97, - 109, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 192, - 133, - 1, - 96, - 96, - 97, - 108, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 108, - 64, - 130, - 1, - 81, - 97, - 109, - 32, - 131, - 1, - 82, - 97, - 108, - 96, - 130, - 1, - 81, - 97, - 109, - 64, - 131, - 1, - 82, - 97, - 108, - 192, - 130, - 1, - 81, - 97, - 109, - 96, - 131, - 1, - 82, - 97, - 108, - 224, - 130, - 1, - 81, - 97, - 109, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 32, - 133, - 1, - 96, - 128, - 97, - 109, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 128, - 130, - 1, - 81, - 97, - 109, - 160, - 131, - 1, - 82, - 97, - 3, - 160, - 130, - 1, - 81, - 97, - 109, - 192, - 131, - 1, - 82, - 97, - 82, - 192, - 130, - 1, - 81, - 97, - 109, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 160, - 133, - 1, - 96, - 96, - 97, - 109, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 109, - 32, - 130, - 1, - 81, - 97, - 110, - 0, - 131, - 1, - 82, - 97, - 109, - 64, - 130, - 1, - 81, - 97, - 110, - 32, - 131, - 1, - 82, - 97, - 109, - 160, - 130, - 1, - 81, - 97, - 110, - 64, - 131, - 1, - 82, - 97, - 109, - 192, - 130, - 1, - 81, - 97, - 110, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 0, - 133, - 1, - 96, - 128, - 97, - 110, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 192, - 130, - 1, - 81, - 97, - 110, - 128, - 131, - 1, - 82, - 97, - 1, - 224, - 130, - 1, - 81, - 97, - 110, - 160, - 131, - 1, - 82, - 97, - 83, - 192, - 130, - 1, - 81, - 97, - 110, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 128, - 133, - 1, - 96, - 96, - 97, - 110, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 110, - 0, - 130, - 1, - 81, - 97, - 110, - 224, - 131, - 1, - 82, - 97, - 110, - 32, - 130, - 1, - 81, - 97, - 111, - 0, - 131, - 1, - 82, - 97, - 110, - 128, - 130, - 1, - 81, - 97, - 111, - 32, - 131, - 1, - 82, - 97, - 110, - 160, - 130, - 1, - 81, - 97, - 111, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 224, - 133, - 1, - 96, - 128, - 97, - 110, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 11, - 32, - 130, - 1, - 81, - 97, - 111, - 96, - 131, - 1, - 82, - 97, - 11, - 64, - 130, - 1, - 81, - 97, - 111, - 128, - 131, - 1, - 82, - 97, - 84, - 0, - 130, - 1, - 81, - 129, - 3, - 97, - 111, - 160, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 96, - 132, - 1, - 96, - 96, - 97, - 111, - 96, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 110, - 224, - 129, - 1, - 81, - 97, - 111, - 192, - 130, - 1, - 82, - 97, - 111, - 0, - 129, - 1, - 81, - 97, - 111, - 224, - 130, - 1, - 82, - 97, - 111, - 96, - 129, - 1, - 81, - 97, - 112, - 0, - 130, - 1, - 82, - 97, - 111, - 128, - 129, - 1, - 81, - 97, - 112, - 32, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 192, - 132, - 1, - 96, - 128, - 97, - 111, - 192, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 112, - 64, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 112, - 96, - 130, - 1, - 82, - 97, - 84, - 32, - 129, - 1, - 81, - 97, - 112, - 128, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 64, - 132, - 1, - 96, - 96, - 97, - 112, - 64, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 111, - 192, - 129, - 1, - 81, - 97, - 112, - 160, - 130, - 1, - 82, - 97, - 111, - 224, - 129, - 1, - 81, - 97, - 112, - 192, - 130, - 1, - 82, - 97, - 112, - 64, - 129, - 1, - 81, - 97, - 112, - 224, - 130, - 1, - 82, - 97, - 112, - 96, - 129, - 1, - 81, - 97, - 113, - 0, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 160, - 132, - 1, - 96, - 128, - 97, - 112, - 160, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 112, - 160, - 129, - 1, - 81, - 97, - 113, - 32, - 130, - 1, - 82, - 97, - 112, - 192, - 129, - 1, - 81, - 97, - 113, - 64, - 130, - 1, - 82, - 127, - 25, - 142, - 147, - 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, - 133, - 183, - 174, - 243, - 18, - 194, - 97, - 113, - 96, - 130, - 1, - 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, - 70, - 222, - 189, - 92, - 217, - 146, - 246, - 237, - 97, - 113, - 128, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, - 85, - 172, - 218, - 220, - 209, - 34, - 151, - 91, - 97, - 113, - 160, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 113, - 192, - 130, - 1, - 82, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 113, - 224, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 114, - 0, - 130, - 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, - 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, - 97, - 114, - 32, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, - 4, - 130, - 196, - 33, - 82, - 168, - 137, - 144, - 39, - 113, - 105, - 137, - 166, - 153, - 108, - 37, - 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, - 97, - 114, - 64, - 130, - 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, - 2, - 33, - 193, - 69, - 97, - 114, - 96, - 130, - 1, - 82, - 127, - 43, - 28, - 187, - 62, - 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, - 96, - 17, - 222, - 255, - 97, - 114, - 128, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 32, - 97, - 113, - 32, - 132, - 1, - 97, - 1, - 128, - 97, - 113, - 32, - 134, - 1, - 96, - 8, - 90, - 250, - 97, - 113, - 32, - 147, - 144, - 147, - 1, - 81, - 96, - 1, - 20, - 146, - 20, - 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, - 80, - 86, - 91, - 96, - 64, - 81, - 128, - 97, - 114, - 128, - 1, - 96, - 64, - 82, - 128, - 97, - 3, - 148, - 144, - 96, - 32, - 130, - 2, - 128, - 54, - 131, - 55, - 80, - 145, - 146, - 145, - 80, - 80, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 65, - 96, - 4, - 82, - 96, - 36, - 96, - 0, - 253, - 91, - 96, - 64, - 81, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 84, - 128, - 87, - 97, - 84, - 128, - 97, - 84, - 65, - 86, - 91, - 96, - 64, - 82, - 145, - 144, - 80, - 86, - 91, - 96, - 0, - 130, - 96, - 31, - 131, - 1, - 18, - 97, - 84, - 153, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 84, - 179, - 87, - 97, - 84, - 179, - 97, - 84, - 65, - 86, - 91, - 97, - 84, - 198, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 96, - 32, - 1, - 97, - 84, - 87, - 86, - 91, - 129, - 129, - 82, - 132, - 96, - 32, - 131, - 134, - 1, - 1, - 17, - 21, - 97, - 84, - 219, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 96, - 32, - 133, - 1, - 96, - 32, - 131, - 1, - 55, - 96, - 0, - 145, - 129, - 1, - 96, - 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 128, - 96, - 64, - 131, - 133, - 3, - 18, - 21, - 97, - 85, - 11, - 87, - 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 85, - 35, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 133, - 1, - 145, - 80, - 133, - 96, - 31, - 131, - 1, - 18, - 97, - 85, - 55, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 96, - 32, - 130, - 130, - 17, - 21, - 97, - 85, - 75, - 87, - 97, - 85, - 75, - 97, - 84, - 65, - 86, - 91, - 129, - 96, - 5, - 27, - 97, - 85, - 90, - 130, - 130, - 1, - 97, - 84, - 87, - 86, - 91, - 146, - 131, - 82, - 132, - 129, - 1, - 130, - 1, - 146, - 130, - 129, - 1, - 144, - 138, - 133, - 17, - 21, - 97, - 85, - 116, - 87, - 96, - 0, - 128, - 253, - 91, - 149, - 131, - 1, - 149, - 91, - 132, - 135, - 16, - 21, - 97, - 85, - 146, - 87, - 134, - 53, - 130, - 82, - 149, - 131, - 1, - 149, - 144, - 131, - 1, - 144, - 97, - 85, - 121, - 86, - 91, - 151, - 80, - 80, - 80, - 134, - 1, - 53, - 146, - 80, - 80, - 128, - 130, - 17, - 21, - 97, - 85, - 169, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 85, - 182, - 133, - 130, - 134, - 1, - 97, - 84, - 136, - 86, - 91, - 145, - 80, - 80, - 146, - 80, - 146, - 144, - 80, - 86, - 254, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 151, - 129, - 106, - 145, - 104, - 113, - 202, - 141, - 60, - 32, - 140, - 22, - 216, - 124, - 253, - 71, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 1, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 67, - 61, - 67, - 155, - 97, - 108, - 155, - 9, - 132, - 170, - 39, - 61, - 101, - 208, - 59, - 188, - 145, - 10, - 87, - 92, - 63, - 198, - 42, - 156, - 80, - 151, - 87, - 123, - 27, - 175, - 252, - 213, - 100, - 115, - 111, - 108, - 99, - 67, - 0, - 8, - 18, - 0, - 51, - ]; - ///The bytecode of the contract. - pub static INCLUSIONVERIFIER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = &[ - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 43, - 87, - 96, - 0, - 53, - 96, - 224, - 28, - 128, - 99, - 189, - 32, - 90, - 144, - 20, - 97, - 0, - 48, - 87, - 91, - 96, - 0, - 128, - 253, - 91, - 97, - 0, - 67, - 97, - 0, - 62, - 54, - 96, - 4, - 97, - 84, - 248, - 86, - 91, - 97, - 0, - 87, - 86, - 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, - 1, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, - 96, - 0, - 96, - 1, - 97, - 0, - 99, - 97, - 84, - 33, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 0, - 217, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 128, - 131, - 16, - 129, - 131, - 16, - 22, - 144, - 131, - 128, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 131, - 132, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 132, - 130, - 9, - 144, - 80, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 193, - 131, - 57, - 129, - 81, - 145, - 82, - 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, - 144, - 145, - 22, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 128, - 96, - 32, - 135, - 1, - 81, - 6, - 96, - 32, - 131, - 1, - 82, - 128, - 96, - 64, - 135, - 1, - 81, - 6, - 96, - 64, - 131, - 1, - 82, - 128, - 96, - 96, - 135, - 1, - 81, - 6, - 96, - 96, - 131, - 1, - 82, - 128, - 96, - 128, - 135, - 1, - 81, - 6, - 96, - 128, - 131, - 1, - 82, - 127, - 16, - 30, - 50, - 32, - 159, - 188, - 42, - 253, - 218, - 46, - 171, - 8, - 238, - 211, - 227, - 233, - 50, - 62, - 205, - 146, - 229, - 198, - 185, - 80, - 130, - 4, - 185, - 72, - 222, - 26, - 229, - 243, - 96, - 0, - 131, - 1, - 82, - 96, - 32, - 133, - 1, - 81, - 128, - 96, - 160, - 132, - 1, - 82, - 96, - 64, - 134, - 1, - 81, - 128, - 96, - 192, - 133, - 1, - 82, - 132, - 97, - 1, - 80, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 133, - 1, - 81, - 128, - 96, - 224, - 132, - 1, - 82, - 96, - 128, - 134, - 1, - 81, - 128, - 97, - 1, - 0, - 133, - 1, - 82, - 132, - 97, - 1, - 119, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 160, - 133, - 1, - 81, - 128, - 97, - 1, - 32, - 132, - 1, - 82, - 96, - 192, - 134, - 1, - 81, - 128, - 97, - 1, - 64, - 133, - 1, - 82, - 132, - 97, - 1, - 159, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 96, - 0, - 131, - 1, - 32, - 97, - 1, - 96, - 131, - 1, - 82, - 97, - 1, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 1, - 128, - 132, - 1, - 82, - 128, - 97, - 1, - 160, - 132, - 1, - 82, - 80, - 96, - 224, - 133, - 1, - 81, - 128, - 97, - 1, - 192, - 132, - 1, - 82, - 97, - 1, - 0, - 134, - 1, - 81, - 128, - 97, - 1, - 224, - 133, - 1, - 82, - 132, - 97, - 1, - 237, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 133, - 1, - 81, - 128, - 97, - 2, - 0, - 132, - 1, - 82, - 97, - 1, - 64, - 134, - 1, - 81, - 128, - 97, - 2, - 32, - 133, - 1, - 82, - 132, - 97, - 2, - 23, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 96, - 160, - 97, - 1, - 160, - 135, - 1, - 32, - 97, - 2, - 64, - 135, - 1, - 129, - 144, - 82, - 133, - 129, - 6, - 97, - 2, - 96, - 136, - 1, - 82, - 97, - 2, - 128, - 135, - 1, - 82, - 22, - 148, - 80, - 96, - 1, - 145, - 80, - 80, - 97, - 2, - 160, - 131, - 1, - 83, - 96, - 33, - 97, - 2, - 128, - 131, - 1, - 32, - 97, - 2, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 2, - 192, - 132, - 1, - 82, - 97, - 2, - 224, - 131, - 1, - 82, - 97, - 1, - 96, - 133, - 1, - 81, - 97, - 3, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 1, - 128, - 134, - 1, - 81, - 97, - 3, - 32, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 2, - 138, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 160, - 133, - 1, - 81, - 128, - 97, - 3, - 64, - 132, - 1, - 82, - 97, - 1, - 192, - 134, - 1, - 81, - 128, - 97, - 3, - 96, - 133, - 1, - 82, - 132, - 97, - 2, - 180, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 224, - 133, - 1, - 81, - 128, - 97, - 3, - 128, - 132, - 1, - 82, - 97, - 2, - 0, - 134, - 1, - 81, - 128, - 97, - 3, - 160, - 133, - 1, - 82, - 132, - 97, - 2, - 222, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 32, - 133, - 1, - 81, - 128, - 97, - 3, - 192, - 132, - 1, - 82, - 97, - 2, - 64, - 134, - 1, - 81, - 128, - 97, - 3, - 224, - 133, - 1, - 82, - 132, - 97, - 3, - 8, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 97, - 2, - 224, - 131, - 1, - 32, - 97, - 4, - 0, - 131, - 1, - 82, - 97, - 4, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 4, - 32, - 132, - 1, - 82, - 128, - 97, - 4, - 64, - 132, - 1, - 82, - 80, - 97, - 2, - 96, - 133, - 1, - 81, - 128, - 97, - 4, - 96, - 132, - 1, - 82, - 97, - 2, - 128, - 134, - 1, - 81, - 128, - 97, - 4, - 128, - 133, - 1, - 82, - 132, - 97, - 3, - 88, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 160, - 133, - 1, - 81, - 128, - 97, - 4, - 160, - 132, - 1, - 82, - 97, - 2, - 192, - 134, - 1, - 81, - 128, - 97, - 4, - 192, - 133, - 1, - 82, - 132, - 97, - 3, - 130, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 224, - 133, - 1, - 81, - 128, - 97, - 4, - 224, - 132, - 1, - 82, - 97, - 3, - 0, - 134, - 1, - 81, - 128, - 97, - 5, - 0, - 133, - 1, - 82, - 132, - 97, - 3, - 172, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 32, - 133, - 1, - 81, - 128, - 97, - 5, - 32, - 132, - 1, - 82, - 97, - 3, - 64, - 134, - 1, - 81, - 128, - 97, - 5, - 64, - 133, - 1, - 82, - 132, - 97, - 3, - 214, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 96, - 133, - 1, - 81, - 128, - 97, - 5, - 96, - 132, - 1, - 82, - 97, - 3, - 128, - 134, - 1, - 81, - 128, - 97, - 5, - 128, - 133, - 1, - 82, - 132, - 97, - 4, - 0, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 97, - 4, - 64, - 131, - 1, - 32, - 97, - 5, - 160, - 131, - 1, - 82, - 97, - 5, - 160, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 5, - 192, - 132, - 1, - 82, - 128, - 97, - 5, - 224, - 132, - 1, - 82, - 80, - 128, - 97, - 3, - 160, - 134, - 1, - 81, - 6, - 97, - 6, - 0, - 131, - 1, - 82, - 128, - 97, - 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 32, - 131, - 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, - 97, - 6, - 64, - 131, - 1, - 82, - 128, - 97, - 4, - 0, - 134, - 1, - 81, - 6, - 97, - 6, - 96, - 131, - 1, - 82, - 128, - 97, - 4, - 32, - 134, - 1, - 81, - 6, - 97, - 6, - 128, - 131, - 1, - 82, - 128, - 97, - 4, - 64, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, - 82, - 128, - 97, - 4, - 96, - 134, - 1, - 81, - 6, - 97, - 6, - 192, - 131, - 1, - 82, - 128, - 97, - 4, - 128, - 134, - 1, - 81, - 6, - 97, - 6, - 224, - 131, - 1, - 82, - 128, - 97, - 4, - 160, - 134, - 1, - 81, - 6, - 97, - 7, - 0, - 131, - 1, - 82, - 128, - 97, - 4, - 192, - 134, - 1, - 81, - 6, - 97, - 7, - 32, - 131, - 1, - 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, - 97, - 7, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 0, - 134, - 1, - 81, - 6, - 97, - 7, - 96, - 131, - 1, - 82, - 128, - 97, - 5, - 32, - 134, - 1, - 81, - 6, - 97, - 7, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 64, - 134, - 1, - 81, - 6, - 97, - 7, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 96, - 134, - 1, - 81, - 6, - 97, - 7, - 192, - 131, - 1, - 82, - 128, - 97, - 5, - 128, - 134, - 1, - 81, - 6, - 97, - 7, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 134, - 1, - 81, - 6, - 97, - 8, - 0, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 134, - 1, - 81, - 6, - 97, - 8, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 134, - 1, - 81, - 6, - 97, - 8, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 134, - 1, - 81, - 6, - 97, - 8, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 134, - 1, - 81, - 6, - 97, - 8, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 134, - 1, - 81, - 6, - 97, - 8, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 134, - 1, - 81, - 6, - 97, - 8, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 134, - 1, - 81, - 6, - 97, - 8, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 160, - 134, - 1, - 81, - 6, - 97, - 9, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 134, - 1, - 81, - 6, - 97, - 9, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, - 97, - 9, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 0, - 134, - 1, - 81, - 6, - 97, - 9, - 96, - 131, - 1, - 82, - 128, - 97, - 7, - 32, - 134, - 1, - 81, - 6, - 97, - 9, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 134, - 1, - 81, - 6, - 97, - 9, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 96, - 134, - 1, - 81, - 6, - 97, - 9, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 134, - 1, - 81, - 6, - 97, - 9, - 224, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 134, - 1, - 81, - 6, - 97, - 10, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 192, - 134, - 1, - 81, - 6, - 97, - 10, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 224, - 134, - 1, - 81, - 6, - 97, - 10, - 64, - 131, - 1, - 82, - 97, - 4, - 128, - 97, - 5, - 224, - 131, - 1, - 32, - 97, - 10, - 96, - 131, - 1, - 82, - 97, - 10, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 10, - 128, - 132, - 1, - 82, - 128, - 97, - 10, - 160, - 132, - 1, - 82, - 80, - 96, - 1, - 97, - 10, - 192, - 131, - 1, - 83, - 96, - 33, - 97, - 10, - 160, - 131, - 1, - 32, - 97, - 10, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 10, - 224, - 132, - 1, - 82, - 97, - 11, - 0, - 131, - 1, - 82, - 97, - 8, - 0, - 133, - 1, - 81, - 97, - 11, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 32, - 134, - 1, - 81, - 97, - 11, - 64, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 6, - 137, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 97, - 11, - 0, - 131, - 1, - 32, - 97, - 11, - 96, - 131, - 1, - 82, - 97, - 11, - 96, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 11, - 128, - 132, - 1, - 82, - 128, - 97, - 11, - 160, - 132, - 1, - 82, - 80, - 97, - 8, - 64, - 133, - 1, - 81, - 128, - 97, - 11, - 192, - 132, - 1, - 82, - 97, - 8, - 96, - 134, - 1, - 81, - 128, - 97, - 11, - 224, - 133, - 1, - 82, - 132, - 97, - 6, - 216, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 12, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 224, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 13, - 64, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 13, - 64, - 132, - 1, - 81, - 8, - 97, - 13, - 96, - 131, - 1, - 82, - 128, - 127, - 48, - 94, - 65, - 233, - 18, - 213, - 121, - 245, - 179, - 25, - 59, - 173, - 202, - 177, - 40, - 50, - 28, - 142, - 225, - 203, - 112, - 170, - 57, - 99, - 49, - 185, - 121, - 85, - 61, - 130, - 0, - 1, - 97, - 13, - 96, - 132, - 1, - 81, - 9, - 97, - 13, - 128, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 160, - 131, - 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, - 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 13, - 192, - 131, - 1, - 82, - 128, - 127, - 36, - 152, - 194, - 211, - 175, - 250, - 27, - 170, - 246, - 65, - 157, - 188, - 203, - 106, - 5, - 75, - 184, - 115, - 89, - 192, - 46, - 173, - 229, - 174, - 172, - 216, - 108, - 132, - 117, - 123, - 144, - 81, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 13, - 224, - 131, - 1, - 82, - 128, - 127, - 11, - 203, - 139, - 159, - 49, - 55, - 132, - 126, - 194, - 14, - 167, - 249, - 182, - 23, - 83, - 17, - 111, - 192, - 142, - 136, - 75, - 11, - 138, - 226, - 151, - 9, - 137, - 15, - 122, - 132, - 111, - 176, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 0, - 131, - 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 32, - 131, - 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, - 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, - 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 64, - 131, - 1, - 82, - 128, - 127, - 40, - 119, - 16, - 113, - 171, - 22, - 51, - 1, - 78, - 174, - 39, - 207, - 193, - 109, - 94, - 190, - 8, - 168, - 254, - 47, - 201, - 232, - 80, - 68, - 228, - 164, - 95, - 130, - 193, - 76, - 216, - 37, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 96, - 131, - 1, - 82, - 128, - 127, - 7, - 237, - 62, - 1, - 54, - 27, - 109, - 40, - 105, - 162, - 29, - 230, - 192, - 19, - 249, - 159, - 31, - 138, - 234, - 24, - 175, - 209, - 32, - 76, - 95, - 61, - 150, - 17, - 46, - 179, - 39, - 220, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 128, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 160, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 14, - 192, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 14, - 224, - 131, - 1, - 82, - 128, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 231, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 64, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 96, - 131, - 1, - 82, - 128, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 162, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 160, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 132, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 15, - 192, - 131, - 1, - 82, - 128, - 127, - 25, - 8, - 89, - 125, - 47, - 195, - 188, - 29, - 163, - 18, - 239, - 163, - 68, - 224, - 252, - 138, - 112, - 121, - 48, - 2, - 56, - 242, - 238, - 53, - 119, - 79, - 17, - 126, - 102, - 253, - 68, - 103, - 97, - 13, - 128, - 132, - 1, - 81, - 9, - 97, - 15, - 224, - 131, - 1, - 82, - 128, - 127, - 23, - 91, - 244, - 245, - 177, - 109, - 228, - 12, - 21, - 61, - 86, - 19, - 60, - 160, - 91, - 210, - 183, - 186, - 184, - 70, - 64, - 198, - 130, - 91, - 204, - 146, - 228, - 21, - 137, - 2, - 187, - 154, - 97, - 5, - 192, - 132, - 1, - 81, - 8, - 97, - 16, - 0, - 131, - 1, - 82, - 97, - 13, - 192, - 130, - 1, - 81, - 129, - 129, - 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 16, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 13, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 17, - 64, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 17, - 128, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 160, - 131, - 1, - 82, - 96, - 32, - 97, - 17, - 192, - 131, - 1, - 82, - 97, - 17, - 64, - 130, - 1, - 81, - 97, - 17, - 224, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 18, - 0, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 18, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 17, - 96, - 133, - 1, - 96, - 192, - 97, - 17, - 128, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 17, - 96, - 130, - 1, - 81, - 96, - 0, - 97, - 13, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 32, - 134, - 1, - 81, - 9, - 97, - 13, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 16, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 17, - 0, - 134, - 1, - 81, - 9, - 97, - 16, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 224, - 134, - 1, - 81, - 9, - 97, - 15, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 192, - 134, - 1, - 81, - 9, - 97, - 15, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 160, - 134, - 1, - 81, - 9, - 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 128, - 134, - 1, - 81, - 9, - 97, - 15, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 96, - 134, - 1, - 81, - 9, - 97, - 14, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 64, - 134, - 1, - 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 32, - 134, - 1, - 81, - 9, - 97, - 14, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 192, - 134, - 1, - 81, - 9, - 97, - 14, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 192, - 133, - 1, - 129, - 144, - 82, - 97, - 13, - 160, - 133, - 1, - 81, - 132, - 147, - 80, - 144, - 145, - 80, - 9, - 97, - 18, - 64, - 131, - 1, - 82, - 128, - 97, - 14, - 0, - 131, - 1, - 81, - 97, - 13, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 96, - 131, - 1, - 82, - 128, - 97, - 14, - 64, - 131, - 1, - 81, - 97, - 14, - 32, - 132, - 1, - 81, - 9, - 97, - 18, - 128, - 131, - 1, - 82, - 128, - 97, - 14, - 128, - 131, - 1, - 81, - 97, - 14, - 96, - 132, - 1, - 81, - 9, - 97, - 18, - 160, - 131, - 1, - 82, - 128, - 97, - 14, - 192, - 131, - 1, - 81, - 97, - 14, - 160, - 132, - 1, - 81, - 9, - 97, - 18, - 192, - 131, - 1, - 82, - 128, - 97, - 15, - 0, - 131, - 1, - 81, - 97, - 14, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 224, - 131, - 1, - 82, - 128, - 97, - 15, - 64, - 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, - 81, - 9, - 97, - 19, - 0, - 131, - 1, - 82, - 128, - 97, - 15, - 128, - 131, - 1, - 81, - 97, - 15, - 96, - 132, - 1, - 81, - 9, - 97, - 19, - 32, - 131, - 1, - 82, - 128, - 97, - 15, - 192, - 131, - 1, - 81, - 97, - 15, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 64, - 131, - 1, - 82, - 128, - 97, - 16, - 0, - 131, - 1, - 81, - 97, - 15, - 224, - 132, - 1, - 81, - 9, - 97, - 19, - 96, - 131, - 1, - 82, - 128, - 96, - 32, - 131, - 1, - 81, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 96, - 64, - 134, - 1, - 81, - 97, - 19, - 32, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 96, - 134, - 1, - 81, - 97, - 19, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 128, - 134, - 1, - 81, - 97, - 19, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 19, - 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, - 81, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, - 144, - 8, - 97, - 19, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 224, - 131, - 1, - 82, - 128, - 97, - 19, - 224, - 131, - 1, - 81, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 0, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, - 128, - 131, - 1, - 81, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 20, - 160, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 192, - 131, - 1, - 82, - 128, - 97, - 20, - 192, - 131, - 1, - 81, - 97, - 20, - 32, - 132, - 1, - 81, - 8, - 97, - 20, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 224, - 132, - 1, - 81, - 8, - 97, - 21, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 32, - 131, - 1, - 82, - 128, - 97, - 21, - 32, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 21, - 64, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 20, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 96, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 160, - 132, - 1, - 81, - 9, - 97, - 21, - 128, - 131, - 1, - 82, - 128, - 97, - 21, - 128, - 131, - 1, - 81, - 97, - 21, - 96, - 132, - 1, - 81, - 8, - 97, - 21, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 21, - 160, - 132, - 1, - 81, - 8, - 97, - 21, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 224, - 131, - 1, - 82, - 128, - 97, - 21, - 224, - 131, - 1, - 81, - 97, - 21, - 64, - 132, - 1, - 81, - 8, - 97, - 22, - 0, - 131, - 1, - 82, - 128, - 97, - 22, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 0, - 132, - 1, - 81, - 8, - 97, - 22, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 22, - 96, - 131, - 1, - 82, - 128, - 97, - 22, - 96, - 131, - 1, - 81, - 97, - 22, - 32, - 132, - 1, - 81, - 8, - 97, - 22, - 128, - 131, - 1, - 82, - 128, - 97, - 22, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 160, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 22, - 192, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 22, - 224, - 131, - 1, - 82, - 128, - 97, - 22, - 224, - 131, - 1, - 81, - 97, - 22, - 192, - 132, - 1, - 81, - 8, - 97, - 23, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 23, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 23, - 96, - 131, - 1, - 82, - 128, - 97, - 23, - 96, - 131, - 1, - 81, - 97, - 23, - 32, - 132, - 1, - 81, - 9, - 97, - 23, - 128, - 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, - 57, - 10, - 218, - 127, - 67, - 112, - 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 23, - 160, - 131, - 1, - 82, - 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, - 96, - 254, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 23, - 192, - 131, - 1, - 82, - 128, - 97, - 23, - 192, - 131, - 1, - 81, - 97, - 23, - 160, - 132, - 1, - 81, - 8, - 97, - 23, - 224, - 131, - 1, - 82, - 128, - 97, - 23, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 23, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 24, - 32, - 131, - 1, - 82, - 128, - 97, - 24, - 32, - 131, - 1, - 81, - 97, - 22, - 160, - 132, - 1, - 81, - 8, - 97, - 24, - 64, - 131, - 1, - 82, - 128, - 97, - 24, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 24, - 96, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 24, - 128, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 20, - 64, - 132, - 1, - 81, - 9, - 97, - 24, - 160, - 131, - 1, - 82, - 128, - 97, - 24, - 160, - 131, - 1, - 81, - 97, - 24, - 128, - 132, - 1, - 81, - 8, - 97, - 24, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 24, - 224, - 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, - 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 25, - 0, - 131, - 1, - 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, - 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 25, - 32, - 131, - 1, - 82, - 128, - 97, - 25, - 32, - 131, - 1, - 81, - 97, - 25, - 0, - 132, - 1, - 81, - 8, - 97, - 25, - 64, - 131, - 1, - 82, - 128, - 97, - 25, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 24, - 224, - 132, - 1, - 81, - 8, - 97, - 25, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 128, - 131, - 1, - 82, - 128, - 97, - 25, - 128, - 131, - 1, - 81, - 97, - 24, - 96, - 132, - 1, - 81, - 8, - 97, - 25, - 160, - 131, - 1, - 82, - 128, - 97, - 25, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 25, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 25, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 2, - 8, - 97, - 26, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 4, - 8, - 97, - 26, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 97, - 6, - 192, - 132, - 1, - 81, - 8, - 97, - 26, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 26, - 160, - 132, - 1, - 81, - 8, - 97, - 26, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 224, - 131, - 1, - 82, - 128, - 97, - 26, - 224, - 131, - 1, - 81, - 97, - 25, - 192, - 132, - 1, - 81, - 8, - 97, - 27, - 0, - 131, - 1, - 82, - 128, - 97, - 27, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 96, - 131, - 1, - 82, - 128, - 97, - 27, - 96, - 131, - 1, - 81, - 97, - 27, - 32, - 132, - 1, - 81, - 8, - 97, - 27, - 128, - 131, - 1, - 82, - 128, - 97, - 27, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 27, - 160, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 0, - 132, - 1, - 81, - 9, - 97, - 27, - 192, - 131, - 1, - 82, - 128, - 97, - 27, - 192, - 131, - 1, - 81, - 97, - 27, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 224, - 131, - 1, - 82, - 128, - 97, - 27, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 0, - 131, - 1, - 82, - 128, - 97, - 8, - 0, - 131, - 1, - 81, - 97, - 21, - 192, - 132, - 1, - 81, - 9, - 97, - 28, - 32, - 131, - 1, - 82, - 128, - 97, - 28, - 32, - 131, - 1, - 81, - 97, - 28, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 64, - 131, - 1, - 82, - 128, - 97, - 28, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 96, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 22, - 64, - 132, - 1, - 81, - 9, - 97, - 28, - 128, - 131, - 1, - 82, - 128, - 97, - 28, - 128, - 131, - 1, - 81, - 97, - 28, - 96, - 132, - 1, - 81, - 8, - 97, - 28, - 160, - 131, - 1, - 82, - 128, - 97, - 28, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 28, - 192, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 24, - 0, - 132, - 1, - 81, - 9, - 97, - 28, - 224, - 131, - 1, - 82, - 128, - 97, - 28, - 224, - 131, - 1, - 81, - 97, - 28, - 192, - 132, - 1, - 81, - 8, - 97, - 29, - 0, - 131, - 1, - 82, - 128, - 97, - 29, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 32, - 131, - 1, - 82, - 128, - 97, - 8, - 32, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 29, - 64, - 131, - 1, - 81, - 97, - 29, - 32, - 132, - 1, - 81, - 8, - 97, - 29, - 96, - 131, - 1, - 82, - 128, - 97, - 29, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 29, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 3, - 96, - 3, - 8, - 97, - 29, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 26, - 192, - 132, - 1, - 81, - 9, - 97, - 29, - 224, - 131, - 1, - 82, - 128, - 97, - 29, - 224, - 131, - 1, - 81, - 97, - 29, - 128, - 132, - 1, - 81, - 8, - 97, - 30, - 0, - 131, - 1, - 82, - 128, - 97, - 30, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 32, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 27, - 64, - 132, - 1, - 81, - 9, - 97, - 30, - 64, - 131, - 1, - 82, - 128, - 97, - 30, - 64, - 131, - 1, - 81, - 97, - 30, - 32, - 132, - 1, - 81, - 8, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 97, - 30, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 131, - 1, - 81, - 97, - 26, - 32, - 132, - 1, - 81, - 9, - 97, - 30, - 160, - 131, - 1, - 82, - 128, - 97, - 30, - 160, - 131, - 1, - 81, - 97, - 29, - 160, - 132, - 1, - 81, - 9, - 97, - 30, - 192, - 131, - 1, - 82, - 128, - 97, - 30, - 192, - 131, - 1, - 81, - 97, - 26, - 96, - 132, - 1, - 81, - 9, - 97, - 30, - 224, - 131, - 1, - 82, - 128, - 97, - 30, - 224, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 31, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 31, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 64, - 131, - 1, - 82, - 128, - 97, - 31, - 64, - 131, - 1, - 81, - 97, - 30, - 128, - 132, - 1, - 81, - 8, - 97, - 31, - 96, - 131, - 1, - 82, - 128, - 97, - 31, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 31, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 31, - 160, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 31, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 31, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 31, - 224, - 132, - 1, - 81, - 8, - 97, - 32, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 32, - 32, - 131, - 1, - 82, - 128, - 97, - 32, - 32, - 131, - 1, - 81, - 97, - 31, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 64, - 131, - 1, - 82, - 128, - 97, - 32, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 32, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 32, - 128, - 131, - 1, - 82, - 128, - 97, - 32, - 128, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 32, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 32, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 32, - 192, - 132, - 1, - 81, - 8, - 97, - 32, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 33, - 0, - 131, - 1, - 82, - 128, - 97, - 33, - 0, - 131, - 1, - 81, - 97, - 32, - 96, - 132, - 1, - 81, - 8, - 97, - 33, - 32, - 131, - 1, - 82, - 128, - 97, - 33, - 32, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 33, - 64, - 131, - 1, - 82, - 128, - 97, - 26, - 0, - 131, - 1, - 81, - 97, - 29, - 160, - 132, - 1, - 81, - 9, - 97, - 33, - 96, - 131, - 1, - 82, - 128, - 97, - 33, - 96, - 131, - 1, - 81, - 97, - 26, - 96, - 132, - 1, - 81, - 9, - 97, - 33, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 33, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 33, - 160, - 132, - 1, - 81, - 8, - 97, - 33, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 33, - 224, - 131, - 1, - 82, - 128, - 97, - 33, - 224, - 131, - 1, - 81, - 97, - 33, - 64, - 132, - 1, - 81, - 8, - 97, - 34, - 0, - 131, - 1, - 82, - 128, - 97, - 34, - 0, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 64, - 131, - 1, - 82, - 128, - 97, - 34, - 64, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 96, - 131, - 1, - 82, - 128, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 34, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 160, - 131, - 1, - 82, - 128, - 97, - 34, - 160, - 131, - 1, - 81, - 97, - 34, - 96, - 132, - 1, - 81, - 8, - 97, - 34, - 192, - 131, - 1, - 82, - 128, - 97, - 34, - 192, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 34, - 224, - 131, - 1, - 82, - 97, - 9, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 35, - 0, - 131, - 1, - 82, - 128, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 35, - 0, - 132, - 1, - 81, - 8, - 97, - 35, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 64, - 131, - 1, - 82, - 128, - 97, - 35, - 64, - 131, - 1, - 81, - 97, - 34, - 224, - 132, - 1, - 81, - 8, - 97, - 35, - 96, - 131, - 1, - 82, - 128, - 97, - 35, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 35, - 128, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 128, - 132, - 1, - 81, - 8, - 97, - 35, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 192, - 131, - 1, - 82, - 128, - 97, - 35, - 192, - 131, - 1, - 81, - 97, - 35, - 128, - 132, - 1, - 81, - 8, - 97, - 35, - 224, - 131, - 1, - 82, - 128, - 97, - 35, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 36, - 0, - 131, - 1, - 82, - 128, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 36, - 32, - 131, - 1, - 82, - 128, - 97, - 18, - 128, - 131, - 1, - 81, - 97, - 18, - 96, - 132, - 1, - 81, - 8, - 97, - 36, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 160, - 131, - 1, - 82, - 128, - 97, - 36, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 36, - 32, - 132, - 1, - 81, - 8, - 97, - 36, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 36, - 224, - 131, - 1, - 82, - 128, - 97, - 36, - 224, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 37, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 37, - 64, - 131, - 1, - 82, - 128, - 97, - 37, - 64, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 37, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 160, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 37, - 192, - 131, - 1, - 82, - 128, - 97, - 37, - 192, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 37, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 97, - 38, - 64, - 131, - 1, - 82, - 128, - 97, - 38, - 64, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 38, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 38, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 38, - 224, - 131, - 1, - 82, - 128, - 97, - 38, - 224, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 39, - 0, - 131, - 1, - 82, - 128, - 97, - 39, - 0, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 39, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, - 9, - 97, - 39, - 96, - 131, - 1, - 82, - 128, - 97, - 39, - 96, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 39, - 128, - 131, - 1, - 82, - 128, - 97, - 39, - 128, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 39, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 19, - 179, - 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, - 97, - 40, - 0, - 131, - 1, - 82, - 128, - 97, - 40, - 0, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 40, - 32, - 131, - 1, - 82, - 128, - 97, - 40, - 32, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 40, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 40, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, - 9, - 97, - 40, - 160, - 131, - 1, - 82, - 128, - 97, - 40, - 160, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 40, - 192, - 131, - 1, - 82, - 128, - 97, - 40, - 192, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 40, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 41, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 40, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 64, - 131, - 1, - 82, - 128, - 97, - 41, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 38, - 192, - 132, - 1, - 81, - 8, - 97, - 41, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 128, - 131, - 1, - 82, - 128, - 97, - 41, - 128, - 131, - 1, - 81, - 97, - 36, - 0, - 132, - 1, - 81, - 8, - 97, - 41, - 160, - 131, - 1, - 82, - 128, - 97, - 41, - 160, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 41, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 8, - 224, - 132, - 1, - 81, - 9, - 97, - 41, - 224, - 131, - 1, - 82, - 128, - 97, - 41, - 224, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 42, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 42, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 9, - 0, - 132, - 1, - 81, - 9, - 97, - 42, - 64, - 131, - 1, - 82, - 128, - 97, - 42, - 64, - 131, - 1, - 81, - 97, - 19, - 128, - 132, - 1, - 81, - 8, - 97, - 42, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 42, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 42, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, - 97, - 42, - 224, - 131, - 1, - 82, - 128, - 97, - 42, - 224, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 43, - 0, - 131, - 1, - 82, - 128, - 97, - 43, - 0, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 43, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, - 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, - 9, - 97, - 43, - 96, - 131, - 1, - 82, - 128, - 97, - 43, - 96, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 43, - 128, - 131, - 1, - 82, - 128, - 97, - 43, - 128, - 131, - 1, - 81, - 97, - 19, - 128, - 132, - 1, - 81, - 8, - 97, - 43, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 43, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 0, - 131, - 1, - 82, - 128, - 97, - 44, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 42, - 192, - 132, - 1, - 81, - 8, - 97, - 44, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 64, - 131, - 1, - 82, - 128, - 97, - 44, - 64, - 131, - 1, - 81, - 97, - 41, - 192, - 132, - 1, - 81, - 8, - 97, - 44, - 96, - 131, - 1, - 82, - 128, - 97, - 44, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 44, - 128, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 44, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 192, - 131, - 1, - 82, - 128, - 97, - 44, - 192, - 131, - 1, - 81, - 97, - 44, - 128, - 132, - 1, - 81, - 8, - 97, - 44, - 224, - 131, - 1, - 82, - 128, - 97, - 44, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 45, - 0, - 131, - 1, - 82, - 97, - 9, - 192, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 45, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 45, - 32, - 132, - 1, - 81, - 8, - 97, - 45, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 96, - 131, - 1, - 82, - 128, - 97, - 45, - 96, - 131, - 1, - 81, - 97, - 45, - 0, - 132, - 1, - 81, - 8, - 97, - 45, - 128, - 131, - 1, - 82, - 128, - 97, - 45, - 128, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 45, - 160, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 45, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 192, - 131, - 1, - 81, - 97, - 10, - 64, - 132, - 1, - 81, - 8, - 97, - 46, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 45, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 97, - 1, - 0, - 9, - 97, - 46, - 64, - 131, - 1, - 82, - 128, - 97, - 46, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 46, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 96, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 46, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 46, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 192, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 8, - 97, - 46, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 46, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 0, - 131, - 1, - 82, - 128, - 97, - 47, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 46, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 64, - 131, - 1, - 82, - 128, - 97, - 47, - 64, - 131, - 1, - 81, - 97, - 45, - 160, - 132, - 1, - 81, - 8, - 97, - 47, - 96, - 131, - 1, - 82, - 128, - 97, - 47, - 96, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 47, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 47, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 19, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 47, - 192, - 131, - 1, - 82, - 128, - 97, - 47, - 192, - 131, - 1, - 81, - 97, - 47, - 128, - 132, - 1, - 81, - 8, - 97, - 47, - 224, - 131, - 1, - 82, - 128, - 97, - 47, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, - 48, - 0, - 131, - 1, - 82, - 128, - 97, - 36, - 192, - 131, - 1, - 81, - 97, - 47, - 160, - 132, - 1, - 81, - 9, - 97, - 48, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 10, - 0, - 132, - 1, - 81, - 8, - 97, - 48, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 96, - 131, - 1, - 81, - 97, - 48, - 0, - 132, - 1, - 81, - 8, - 97, - 48, - 128, - 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 48, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 13, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 49, - 0, - 131, - 1, - 82, - 128, - 97, - 13, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 32, - 131, - 1, - 82, - 128, - 97, - 48, - 160, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 64, - 131, - 1, - 82, - 128, - 97, - 48, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 224, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 49, - 128, - 131, - 1, - 82, - 128, - 97, - 13, - 96, - 131, - 1, - 81, - 97, - 48, - 128, - 132, - 1, - 81, - 9, - 97, - 49, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 97, - 12, - 0, - 132, - 1, - 81, - 9, - 97, - 49, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 49, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 0, - 131, - 1, - 82, - 128, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 95, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 32, - 131, - 1, - 82, - 128, - 97, - 50, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 64, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 96, - 131, - 1, - 82, - 128, - 97, - 50, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 128, - 131, - 1, - 82, - 128, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 26, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 50, - 160, - 131, - 1, - 82, - 128, - 97, - 50, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 128, - 132, - 1, - 81, - 8, - 97, - 50, - 192, - 131, - 1, - 82, - 128, - 129, - 127, - 33, - 5, - 76, - 232, - 179, - 203, - 157, - 201, - 184, - 122, - 245, - 199, - 12, - 143, - 84, - 153, - 64, - 144, - 173, - 143, - 167, - 224, - 108, - 170, - 249, - 137, - 186, - 88, - 6, - 182, - 121, - 139, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 15, - 95, - 1, - 138, - 45, - 102, - 2, - 95, - 255, - 213, - 79, - 239, - 116, - 242, - 3, - 195, - 231, - 163, - 58, - 184, - 209, - 217, - 3, - 230, - 74, - 88, - 59, - 59, - 233, - 73, - 134, - 118, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 50, - 224, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 16, - 172, - 0, - 157, - 47, - 49, - 57, - 94, - 48, - 22, - 53, - 205, - 109, - 41, - 41, - 120, - 164, - 1, - 33, - 151, - 194, - 77, - 110, - 99, - 251, - 73, - 148, - 58, - 112, - 41, - 97, - 54, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 38, - 150, - 170, - 39, - 136, - 17, - 12, - 99, - 235, - 191, - 215, - 249, - 43, - 53, - 44, - 233, - 59, - 40, - 187, - 218, - 229, - 123, - 124, - 185, - 75, - 197, - 136, - 94, - 228, - 57, - 231, - 116, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 0, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 37, - 16, - 202, - 225, - 97, - 135, - 19, - 172, - 23, - 201, - 239, - 131, - 241, - 166, - 118, - 69, - 237, - 33, - 244, - 84, - 217, - 107, - 241, - 240, - 114, - 202, - 91, - 70, - 62, - 127, - 12, - 40, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 13, - 106, - 7, - 101, - 60, - 100, - 244, - 17, - 34, - 132, - 203, - 139, - 35, - 191, - 115, - 173, - 236, - 175, - 78, - 224, - 254, - 245, - 25, - 152, - 84, - 149, - 38, - 240, - 123, - 109, - 239, - 215, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 51, - 32, - 132, - 1, - 82, - 80, - 97, - 50, - 0, - 130, - 1, - 81, - 129, - 144, - 96, - 1, - 9, - 97, - 51, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 50, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 51, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 50, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 51, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 29, - 129, - 185, - 189, - 81, - 101, - 214, - 58, - 13, - 74, - 131, - 112, - 211, - 121, - 102, - 235, - 36, - 51, - 101, - 211, - 108, - 162, - 53, - 145, - 21, - 100, - 167, - 131, - 248, - 35, - 76, - 242, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 18, - 226, - 148, - 181, - 143, - 203, - 201, - 239, - 171, - 5, - 194, - 69, - 174, - 7, - 241, - 114, - 4, - 0, - 130, - 117, - 13, - 23, - 59, - 0, - 46, - 125, - 78, - 15, - 247, - 220, - 179, - 15, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 192, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 20, - 47, - 147, - 200, - 145, - 151, - 0, - 237, - 219, - 70, - 168, - 35, - 166, - 63, - 23, - 38, - 192, - 94, - 105, - 83, - 253, - 139, - 165, - 125, - 223, - 110, - 167, - 14, - 126, - 188, - 141, - 207, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 39, - 7, - 211, - 204, - 87, - 136, - 194, - 207, - 192, - 238, - 158, - 95, - 86, - 56, - 218, - 59, - 144, - 203, - 109, - 139, - 151, - 34, - 74, - 69, - 33, - 7, - 62, - 201, - 241, - 8, - 38, - 251, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 51, - 224, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 19, - 211, - 212, - 219, - 131, - 180, - 44, - 77, - 72, - 175, - 166, - 181, - 201, - 203, - 227, - 244, - 151, - 3, - 208, - 202, - 241, - 253, - 195, - 1, - 176, - 212, - 211, - 116, - 58, - 182, - 8, - 51, - 97, - 12, - 0, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 34, - 62, - 217, - 157, - 56, - 7, - 88, - 25, - 4, - 63, - 168, - 94, - 211, - 197, - 79, - 59, - 251, - 93, - 98, - 49, - 33, - 57, - 86, - 44, - 168, - 45, - 153, - 3, - 177, - 181, - 46, - 39, - 97, - 12, - 0, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 52, - 0, - 132, - 1, - 82, - 80, - 97, - 50, - 128, - 130, - 1, - 81, - 97, - 51, - 96, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 32, - 131, - 1, - 82, - 128, - 129, - 127, - 27, - 158, - 76, - 236, - 249, - 217, - 26, - 83, - 67, - 116, - 250, - 119, - 4, - 55, - 1, - 200, - 45, - 199, - 230, - 158, - 106, - 102, - 27, - 22, - 61, - 214, - 53, - 73, - 174, - 141, - 143, - 163, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 64, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 20, - 198, - 1, - 133, - 231, - 88, - 133, - 214, - 116, - 219, - 75, - 63, - 125, - 74, - 86, - 148, - 250, - 108, - 1, - 170, - 15, - 83, - 85, - 123, - 6, - 11, - 192, - 74, - 65, - 114, - 112, - 94, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 26, - 81, - 77, - 217, - 248, - 13, - 227, - 85, - 19, - 52, - 20, - 153, - 11, - 255, - 220, - 19, - 113, - 105, - 255, - 191, - 121, - 241, - 176, - 152, - 140, - 228, - 220, - 75, - 39, - 173, - 180, - 227, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 96, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 5, - 102, - 255, - 251, - 185, - 242, - 131, - 118, - 117, - 5, - 251, - 80, - 8, - 88, - 82, - 209, - 18, - 200, - 198, - 241, - 61, - 122, - 81, - 148, - 187, - 179, - 133, - 14, - 88, - 40, - 233, - 232, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 52, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 253, - 78, - 119, - 39, - 63, - 28, - 179, - 67, - 74, - 74, - 102, - 121, - 41, - 5, - 140, - 21, - 107, - 33, - 87, - 60, - 63, - 30, - 252, - 136, - 46, - 112, - 133, - 151, - 215, - 22, - 25, - 97, - 5, - 192, - 133, - 1, - 81, - 9, - 97, - 11, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 32, - 25, - 133, - 23, - 103, - 3, - 18, - 84, - 21, - 97, - 161, - 114, - 13, - 37, - 56, - 172, - 53, - 125, - 245, - 157, - 175, - 160, - 212, - 27, - 215, - 35, - 90, - 151, - 242, - 243, - 100, - 55, - 97, - 5, - 192, - 136, - 1, - 81, - 9, - 97, - 5, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 52, - 160, - 132, - 1, - 82, - 80, - 97, - 50, - 192, - 130, - 1, - 81, - 97, - 51, - 64, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 192, - 131, - 1, - 82, - 97, - 50, - 224, - 130, - 1, - 81, - 129, - 129, - 97, - 51, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 54, - 128, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 54, - 192, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 224, - 131, - 1, - 82, - 96, - 32, - 97, - 55, - 0, - 131, - 1, - 82, - 97, - 54, - 128, - 130, - 1, - 81, - 97, - 55, - 32, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 55, - 64, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 55, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 54, - 160, - 133, - 1, - 96, - 192, - 97, - 54, - 192, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 54, - 160, - 130, - 1, - 81, - 96, - 0, - 97, - 52, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 96, - 134, - 1, - 81, - 9, - 97, - 52, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 64, - 134, - 1, - 81, - 9, - 97, - 52, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 32, - 134, - 1, - 81, - 9, - 97, - 52, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 54, - 0, - 134, - 1, - 81, - 9, - 97, - 51, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 224, - 134, - 1, - 81, - 9, - 97, - 52, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 192, - 134, - 1, - 81, - 9, - 97, - 52, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 160, - 134, - 1, - 81, - 9, - 97, - 52, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 128, - 134, - 1, - 81, - 9, - 97, - 52, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 96, - 134, - 1, - 81, - 9, - 97, - 51, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 64, - 134, - 1, - 81, - 9, - 97, - 51, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 32, - 134, - 1, - 81, - 9, - 97, - 51, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 0, - 134, - 1, - 81, - 9, - 97, - 51, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 52, - 224, - 134, - 1, - 81, - 9, - 97, - 51, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 51, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 224, - 134, - 1, - 81, - 9, - 97, - 51, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 50, - 224, - 133, - 1, - 129, - 144, - 82, - 97, - 51, - 0, - 133, - 1, - 81, - 144, - 146, - 80, - 131, - 145, - 80, - 130, - 144, - 8, - 144, - 80, - 129, - 129, - 97, - 51, - 32, - 133, - 1, - 81, - 8, - 97, - 55, - 128, - 132, - 1, - 82, - 80, - 97, - 51, - 64, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 55, - 160, - 131, - 1, - 82, - 97, - 51, - 160, - 130, - 1, - 81, - 128, - 97, - 55, - 192, - 132, - 1, - 82, - 80, - 128, - 97, - 52, - 32, - 131, - 1, - 81, - 97, - 51, - 128, - 132, - 1, - 81, - 9, - 97, - 55, - 224, - 131, - 1, - 82, - 97, - 51, - 192, - 130, - 1, - 81, - 129, - 129, - 97, - 51, - 224, - 133, - 1, - 81, - 8, - 144, - 80, - 129, - 129, - 97, - 52, - 0, - 133, - 1, - 81, - 8, - 97, - 56, - 0, - 132, - 1, - 82, - 80, - 97, - 51, - 96, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 56, - 32, - 131, - 1, - 82, - 97, - 52, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 8, - 97, - 56, - 64, - 132, - 1, - 82, - 80, - 97, - 52, - 192, - 130, - 1, - 81, - 97, - 51, - 128, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 56, - 96, - 131, - 1, - 82, - 97, - 52, - 128, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 8, - 97, - 56, - 128, - 132, - 1, - 82, - 80, - 97, - 55, - 128, - 130, - 1, - 81, - 97, - 55, - 192, - 131, - 1, - 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 56, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 56, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 56, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 56, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 57, - 0, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 57, - 64, - 131, - 1, - 82, - 96, - 32, - 97, - 57, - 96, - 131, - 1, - 82, - 96, - 32, - 97, - 57, - 128, - 131, - 1, - 82, - 97, - 57, - 0, - 130, - 1, - 81, - 97, - 57, - 160, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 57, - 192, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 85, - 225, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 57, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 57, - 32, - 133, - 1, - 96, - 192, - 97, - 57, - 64, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 57, - 32, - 130, - 1, - 81, - 96, - 0, - 97, - 56, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 224, - 134, - 1, - 81, - 9, - 97, - 56, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 56, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 192, - 134, - 1, - 81, - 9, - 97, - 56, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 56, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 56, - 160, - 134, - 1, - 81, - 9, - 97, - 56, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 55, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 55, - 128, - 134, - 1, - 81, - 9, - 97, - 55, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 55, - 128, - 133, - 1, - 82, - 80, - 80, - 97, - 55, - 192, - 130, - 1, - 81, - 97, - 55, - 160, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 58, - 0, - 131, - 1, - 82, - 128, - 97, - 56, - 0, - 131, - 1, - 81, - 97, - 55, - 224, - 132, - 1, - 81, - 9, - 97, - 58, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 64, - 131, - 1, - 81, - 97, - 56, - 32, - 132, - 1, - 81, - 9, - 97, - 58, - 64, - 131, - 1, - 82, - 128, - 97, - 56, - 128, - 131, - 1, - 81, - 97, - 56, - 96, - 132, - 1, - 81, - 9, - 97, - 58, - 96, - 131, - 1, - 82, - 97, - 10, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 58, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 58, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 59, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 224, - 131, - 1, - 82, - 97, - 10, - 224, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 61, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 96, - 131, - 1, - 82, - 128, - 97, - 50, - 224, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 0, - 134, - 1, - 81, - 97, - 6, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, - 81, - 97, - 6, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 61, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 61, - 192, - 131, - 1, - 82, - 128, - 97, - 50, - 224, - 131, - 1, - 81, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 0, - 134, - 1, - 81, - 97, - 6, - 96, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 51, - 32, - 134, - 1, - 81, - 97, - 6, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 224, - 132, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 62, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 62, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 64, - 131, - 1, - 82, - 128, - 97, - 62, - 32, - 131, - 1, - 81, - 97, - 61, - 192, - 132, - 1, - 81, - 8, - 97, - 62, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, - 81, - 9, - 97, - 62, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 64, - 132, - 1, - 81, - 9, - 97, - 62, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 9, - 97, - 62, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 0, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 0, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 63, - 32, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 10, - 64, - 132, - 1, - 81, - 9, - 97, - 63, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 63, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 192, - 131, - 1, - 82, - 128, - 97, - 63, - 160, - 131, - 1, - 81, - 97, - 63, - 32, - 132, - 1, - 81, - 8, - 97, - 63, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 9, - 97, - 64, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, - 82, - 128, - 97, - 58, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 64, - 96, - 131, - 1, - 82, - 128, - 97, - 64, - 64, - 131, - 1, - 81, - 97, - 63, - 224, - 132, - 1, - 81, - 8, - 97, - 64, - 128, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 9, - 97, - 64, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 224, - 131, - 1, - 82, - 128, - 97, - 58, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 65, - 0, - 131, - 1, - 82, - 128, - 97, - 64, - 224, - 131, - 1, - 81, - 97, - 64, - 128, - 132, - 1, - 81, - 8, - 97, - 65, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 9, - 97, - 65, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 65, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, - 82, - 128, - 97, - 58, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 65, - 160, - 131, - 1, - 82, - 128, - 97, - 65, - 128, - 131, - 1, - 81, - 97, - 65, - 32, - 132, - 1, - 81, - 8, - 97, - 65, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, - 81, - 9, - 97, - 65, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, - 82, - 128, - 97, - 58, - 224, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 66, - 64, - 131, - 1, - 82, - 128, - 97, - 66, - 32, - 131, - 1, - 81, - 97, - 65, - 192, - 132, - 1, - 81, - 8, - 97, - 66, - 96, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 192, - 131, - 1, - 82, - 128, - 97, - 59, - 0, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 66, - 224, - 131, - 1, - 82, - 128, - 97, - 66, - 192, - 131, - 1, - 81, - 97, - 66, - 96, - 132, - 1, - 81, - 8, - 97, - 67, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 128, - 132, - 1, - 81, - 9, - 97, - 67, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 67, - 96, - 131, - 1, - 82, - 128, - 97, - 59, - 32, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 67, - 128, - 131, - 1, - 82, - 128, - 97, - 67, - 96, - 131, - 1, - 81, - 97, - 67, - 0, - 132, - 1, - 81, - 8, - 97, - 67, - 160, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 160, - 132, - 1, - 81, - 9, - 97, - 67, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 0, - 131, - 1, - 82, - 128, - 97, - 59, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 32, - 131, - 1, - 82, - 128, - 97, - 68, - 0, - 131, - 1, - 81, - 97, - 67, - 160, - 132, - 1, - 81, - 8, - 97, - 68, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 68, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, - 82, - 128, - 97, - 59, - 96, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 192, - 131, - 1, - 82, - 128, - 97, - 68, - 160, - 131, - 1, - 81, - 97, - 68, - 64, - 132, - 1, - 81, - 8, - 97, - 68, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 7, - 224, - 132, - 1, - 81, - 9, - 97, - 69, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 64, - 131, - 1, - 82, - 128, - 97, - 59, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 69, - 96, - 131, - 1, - 82, - 128, - 97, - 69, - 64, - 131, - 1, - 81, - 97, - 68, - 224, - 132, - 1, - 81, - 8, - 97, - 69, - 128, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 69, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, - 82, - 128, - 97, - 59, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 70, - 0, - 131, - 1, - 82, - 128, - 97, - 69, - 224, - 131, - 1, - 81, - 97, - 69, - 128, - 132, - 1, - 81, - 8, - 97, - 70, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 70, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 70, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, - 82, - 128, - 97, - 59, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 70, - 160, - 131, - 1, - 82, - 128, - 97, - 70, - 128, - 131, - 1, - 81, - 97, - 70, - 32, - 132, - 1, - 81, - 8, - 97, - 70, - 192, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 59, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 32, - 131, - 1, - 82, - 128, - 97, - 59, - 224, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 71, - 64, - 131, - 1, - 82, - 128, - 97, - 71, - 32, - 131, - 1, - 81, - 97, - 70, - 192, - 132, - 1, - 81, - 8, - 97, - 71, - 96, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 71, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 192, - 131, - 1, - 82, - 128, - 97, - 60, - 0, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 71, - 224, - 131, - 1, - 82, - 128, - 97, - 71, - 192, - 131, - 1, - 81, - 97, - 71, - 96, - 132, - 1, - 81, - 8, - 97, - 72, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 72, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 72, - 96, - 131, - 1, - 82, - 128, - 97, - 60, - 32, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 128, - 131, - 1, - 82, - 128, - 97, - 72, - 96, - 131, - 1, - 81, - 97, - 72, - 0, - 132, - 1, - 81, - 8, - 97, - 72, - 160, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 0, - 131, - 1, - 82, - 128, - 97, - 60, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 32, - 131, - 1, - 82, - 128, - 97, - 73, - 0, - 131, - 1, - 81, - 97, - 72, - 160, - 132, - 1, - 81, - 8, - 97, - 73, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 224, - 132, - 1, - 81, - 9, - 97, - 73, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 73, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 160, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 192, - 131, - 1, - 82, - 128, - 97, - 73, - 160, - 131, - 1, - 81, - 97, - 73, - 64, - 132, - 1, - 81, - 8, - 97, - 73, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 9, - 0, - 132, - 1, - 81, - 9, - 97, - 74, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 74, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 74, - 64, - 131, - 1, - 82, - 128, - 97, - 60, - 128, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 74, - 96, - 131, - 1, - 82, - 128, - 97, - 74, - 64, - 131, - 1, - 81, - 97, - 73, - 224, - 132, - 1, - 81, - 8, - 97, - 74, - 128, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 32, - 132, - 1, - 81, - 9, - 97, - 74, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 64, - 132, - 1, - 81, - 9, - 97, - 74, - 192, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 96, - 132, - 1, - 81, - 9, - 97, - 74, - 224, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 49, - 128, - 132, - 1, - 81, - 9, - 97, - 75, - 0, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 49, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 75, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 75, - 96, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 75, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 160, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 192, - 132, - 1, - 81, - 9, - 97, - 75, - 192, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 74, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 224, - 131, - 1, - 82, - 128, - 97, - 60, - 160, - 131, - 1, - 81, - 97, - 75, - 0, - 132, - 1, - 81, - 9, - 97, - 76, - 0, - 131, - 1, - 82, - 128, - 97, - 75, - 96, - 131, - 1, - 81, - 97, - 74, - 128, - 132, - 1, - 81, - 8, - 97, - 76, - 32, - 131, - 1, - 82, - 128, - 97, - 51, - 160, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 76, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 58, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 76, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 60, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 76, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 192, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 76, - 160, - 131, - 1, - 82, - 128, - 97, - 76, - 128, - 131, - 1, - 81, - 97, - 76, - 32, - 132, - 1, - 81, - 8, - 97, - 76, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 76, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 63, - 64, - 132, - 1, - 81, - 9, - 97, - 77, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 63, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 64, - 96, - 132, - 1, - 81, - 9, - 97, - 77, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 65, - 0, - 132, - 1, - 81, - 9, - 97, - 77, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 65, - 160, - 132, - 1, - 81, - 9, - 97, - 77, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 66, - 64, - 132, - 1, - 81, - 9, - 97, - 77, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 66, - 224, - 132, - 1, - 81, - 9, - 97, - 77, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 67, - 128, - 132, - 1, - 81, - 9, - 97, - 77, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 68, - 32, - 132, - 1, - 81, - 9, - 97, - 78, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 68, - 192, - 132, - 1, - 81, - 9, - 97, - 78, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 69, - 96, - 132, - 1, - 81, - 9, - 97, - 78, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 70, - 0, - 132, - 1, - 81, - 9, - 97, - 78, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 70, - 160, - 132, - 1, - 81, - 9, - 97, - 78, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 71, - 64, - 132, - 1, - 81, - 9, - 97, - 78, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 71, - 224, - 132, - 1, - 81, - 9, - 97, - 78, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 72, - 128, - 132, - 1, - 81, - 9, - 97, - 78, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 73, - 32, - 132, - 1, - 81, - 9, - 97, - 79, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 73, - 192, - 132, - 1, - 81, - 9, - 97, - 79, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 74, - 96, - 132, - 1, - 81, - 9, - 97, - 79, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 128, - 132, - 1, - 81, - 9, - 97, - 79, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 160, - 132, - 1, - 81, - 9, - 97, - 79, - 128, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 192, - 132, - 1, - 81, - 9, - 97, - 79, - 160, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 75, - 224, - 132, - 1, - 81, - 9, - 97, - 79, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 76, - 0, - 132, - 1, - 81, - 9, - 97, - 79, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 224, - 131, - 1, - 81, - 97, - 76, - 160, - 132, - 1, - 81, - 9, - 97, - 80, - 0, - 131, - 1, - 82, - 128, - 97, - 76, - 224, - 131, - 1, - 81, - 97, - 62, - 128, - 132, - 1, - 81, - 8, - 97, - 80, - 32, - 131, - 1, - 82, - 128, - 97, - 55, - 224, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 80, - 64, - 131, - 1, - 82, - 128, - 97, - 51, - 192, - 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 51, - 224, - 134, - 1, - 81, - 97, - 9, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 52, - 0, - 134, - 1, - 81, - 97, - 9, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 80, - 96, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 80, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 80, - 128, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 80, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 80, - 64, - 132, - 1, - 81, - 9, - 97, - 80, - 192, - 131, - 1, - 82, - 128, - 97, - 61, - 0, - 131, - 1, - 81, - 97, - 80, - 160, - 132, - 1, - 81, - 9, - 97, - 80, - 224, - 131, - 1, - 82, - 128, - 97, - 61, - 0, - 131, - 1, - 81, - 97, - 80, - 192, - 132, - 1, - 81, - 9, - 97, - 81, - 0, - 131, - 1, - 82, - 128, - 97, - 80, - 224, - 131, - 1, - 81, - 97, - 80, - 32, - 132, - 1, - 81, - 8, - 97, - 81, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 81, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 128, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 96, - 134, - 1, - 81, - 97, - 9, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 81, - 96, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 81, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 81, - 128, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 81, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 81, - 64, - 132, - 1, - 81, - 9, - 97, - 81, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 97, - 9, - 192, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 96, - 134, - 1, - 81, - 97, - 9, - 224, - 135, - 1, - 81, - 9, - 8, - 97, - 81, - 224, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 64, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 82, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 82, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 81, - 64, - 132, - 1, - 81, - 9, - 97, - 82, - 64, - 131, - 1, - 82, - 128, - 97, - 82, - 32, - 131, - 1, - 81, - 97, - 81, - 160, - 132, - 1, - 81, - 8, - 97, - 82, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 61, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 82, - 128, - 131, - 1, - 82, - 128, - 97, - 61, - 32, - 131, - 1, - 81, - 97, - 81, - 192, - 132, - 1, - 81, - 9, - 97, - 82, - 160, - 131, - 1, - 82, - 128, - 97, - 61, - 32, - 131, - 1, - 81, - 97, - 82, - 64, - 132, - 1, - 81, - 9, - 97, - 82, - 192, - 131, - 1, - 82, - 128, - 97, - 82, - 128, - 131, - 1, - 81, - 97, - 81, - 32, - 132, - 1, - 81, - 8, - 97, - 82, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 83, - 0, - 131, - 1, - 82, - 128, - 97, - 52, - 128, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 52, - 160, - 134, - 1, - 81, - 97, - 10, - 32, - 135, - 1, - 81, - 9, - 8, - 97, - 83, - 32, - 132, - 1, - 129, - 144, - 82, - 97, - 58, - 96, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 83, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 83, - 64, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 83, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 83, - 0, - 132, - 1, - 81, - 9, - 97, - 83, - 128, - 131, - 1, - 82, - 128, - 97, - 61, - 64, - 131, - 1, - 81, - 97, - 83, - 96, - 132, - 1, - 81, - 9, - 97, - 83, - 160, - 131, - 1, - 82, - 128, - 97, - 61, - 64, - 131, - 1, - 81, - 97, - 83, - 128, - 132, - 1, - 81, - 9, - 97, - 83, - 192, - 131, - 1, - 82, - 128, - 97, - 83, - 160, - 131, - 1, - 81, - 97, - 82, - 224, - 132, - 1, - 81, - 8, - 97, - 83, - 224, - 131, - 1, - 82, - 128, - 97, - 51, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 84, - 0, - 131, - 1, - 82, - 128, - 97, - 11, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 84, - 32, - 131, - 1, - 82, - 96, - 1, - 97, - 84, - 64, - 131, - 1, - 129, - 129, - 82, - 96, - 2, - 97, - 84, - 96, - 133, - 1, - 82, - 97, - 83, - 224, - 132, - 1, - 81, - 97, - 84, - 128, - 133, - 1, - 82, - 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 64, - 130, - 1, - 81, - 97, - 84, - 160, - 131, - 1, - 82, - 97, - 84, - 96, - 130, - 1, - 81, - 97, - 84, - 192, - 131, - 1, - 82, - 96, - 160, - 130, - 1, - 81, - 97, - 84, - 224, - 131, - 1, - 82, - 96, - 192, - 130, - 1, - 81, - 97, - 85, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 160, - 133, - 1, - 96, - 128, - 97, - 84, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 224, - 130, - 1, - 81, - 97, - 85, - 32, - 131, - 1, - 82, - 97, - 1, - 0, - 130, - 1, - 81, - 97, - 85, - 64, - 131, - 1, - 82, - 97, - 62, - 160, - 130, - 1, - 81, - 97, - 85, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 32, - 133, - 1, - 96, - 96, - 97, - 85, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 160, - 130, - 1, - 81, - 97, - 85, - 128, - 131, - 1, - 82, - 97, - 84, - 192, - 130, - 1, - 81, - 97, - 85, - 160, - 131, - 1, - 82, - 97, - 85, - 32, - 130, - 1, - 81, - 97, - 85, - 192, - 131, - 1, - 82, - 97, - 85, - 64, - 130, - 1, - 81, - 97, - 85, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 128, - 133, - 1, - 96, - 128, - 97, - 85, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 32, - 130, - 1, - 81, - 97, - 86, - 0, - 131, - 1, - 82, - 97, - 1, - 64, - 130, - 1, - 81, - 97, - 86, - 32, - 131, - 1, - 82, - 97, - 77, - 0, - 130, - 1, - 81, - 97, - 86, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 0, - 133, - 1, - 96, - 96, - 97, - 86, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 85, - 128, - 130, - 1, - 81, - 97, - 86, - 96, - 131, - 1, - 82, - 97, - 85, - 160, - 130, - 1, - 81, - 97, - 86, - 128, - 131, - 1, - 82, - 97, - 86, - 0, - 130, - 1, - 81, - 97, - 86, - 160, - 131, - 1, - 82, - 97, - 86, - 32, - 130, - 1, - 81, - 97, - 86, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 96, - 133, - 1, - 96, - 128, - 97, - 86, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 2, - 0, - 130, - 1, - 81, - 97, - 86, - 224, - 131, - 1, - 82, - 97, - 2, - 32, - 130, - 1, - 81, - 97, - 87, - 0, - 131, - 1, - 82, - 97, - 77, - 32, - 130, - 1, - 81, - 97, - 87, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 224, - 133, - 1, - 96, - 96, - 97, - 86, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 86, - 96, - 130, - 1, - 81, - 97, - 87, - 64, - 131, - 1, - 82, - 97, - 86, - 128, - 130, - 1, - 81, - 97, - 87, - 96, - 131, - 1, - 82, - 97, - 86, - 224, - 130, - 1, - 81, - 97, - 87, - 128, - 131, - 1, - 82, - 97, - 87, - 0, - 130, - 1, - 81, - 97, - 87, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 64, - 133, - 1, - 96, - 128, - 97, - 87, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 155, - 18, - 230, - 83, - 153, - 220, - 234, - 63, - 30, - 12, - 224, - 70, - 207, - 95, - 147, - 206, - 123, - 169, - 247, - 121, - 191, - 163, - 158, - 127, - 12, - 109, - 76, - 25, - 98, - 138, - 144, - 97, - 87, - 192, - 131, - 1, - 82, - 127, - 33, - 197, - 119, - 18, - 42, - 61, - 31, - 77, - 1, - 155, - 147, - 231, - 36, - 217, - 129, - 176, - 101, - 62, - 217, - 79, - 73, - 46, - 175, - 236, - 80, - 148, - 82, - 49, - 147, - 95, - 154, - 149, - 97, - 87, - 224, - 131, - 1, - 82, - 97, - 77, - 64, - 130, - 1, - 81, - 97, - 88, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 192, - 133, - 1, - 96, - 96, - 97, - 87, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, - 81, - 97, - 88, - 32, - 131, - 1, - 82, - 97, - 87, - 96, - 130, - 1, - 81, - 97, - 88, - 64, - 131, - 1, - 82, - 97, - 87, - 192, - 130, - 1, - 81, - 97, - 88, - 96, - 131, - 1, - 82, - 97, - 87, - 224, - 130, - 1, - 81, - 97, - 88, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 32, - 133, - 1, - 96, - 128, - 97, - 88, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 217, - 34, - 1, - 65, - 190, - 242, - 89, - 33, - 212, - 116, - 198, - 230, - 52, - 208, - 109, - 251, - 125, - 121, - 4, - 229, - 154, - 78, - 196, - 134, - 161, - 72, - 176, - 11, - 253, - 56, - 163, - 97, - 88, - 160, - 131, - 1, - 82, - 127, - 47, - 56, - 81, - 30, - 83, - 104, - 128, - 86, - 182, - 147, - 200, - 78, - 246, - 154, - 122, - 226, - 185, - 171, - 72, - 41, - 6, - 220, - 70, - 174, - 157, - 149, - 34, - 253, - 60, - 224, - 152, - 182, - 97, - 88, - 192, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 88, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 160, - 133, - 1, - 96, - 96, - 97, - 88, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 88, - 32, - 130, - 1, - 81, - 97, - 89, - 0, - 131, - 1, - 82, - 97, - 88, - 64, - 130, - 1, - 81, - 97, - 89, - 32, - 131, - 1, - 82, - 97, - 88, - 160, - 130, - 1, - 81, - 97, - 89, - 64, - 131, - 1, - 82, - 97, - 88, - 192, - 130, - 1, - 81, - 97, - 89, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 0, - 133, - 1, - 96, - 128, - 97, - 89, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 231, - 203, - 106, - 48, - 196, - 206, - 154, - 61, - 141, - 230, - 4, - 219, - 175, - 81, - 123, - 31, - 35, - 228, - 64, - 172, - 185, - 231, - 52, - 89, - 56, - 255, - 91, - 36, - 90, - 64, - 62, - 97, - 89, - 128, - 131, - 1, - 82, - 127, - 28, - 49, - 164, - 45, - 125, - 163, - 96, - 204, - 232, - 38, - 46, - 33, - 251, - 154, - 94, - 242, - 106, - 35, - 235, - 188, - 246, - 153, - 92, - 202, - 184, - 154, - 238, - 64, - 12, - 46, - 153, - 75, - 97, - 89, - 160, - 131, - 1, - 82, - 97, - 77, - 128, - 130, - 1, - 81, - 97, - 89, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 128, - 133, - 1, - 96, - 96, - 97, - 89, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 0, - 130, - 1, - 81, - 97, - 89, - 224, - 131, - 1, - 82, - 97, - 89, - 32, - 130, - 1, - 81, - 97, - 90, - 0, - 131, - 1, - 82, - 97, - 89, - 128, - 130, - 1, - 81, - 97, - 90, - 32, - 131, - 1, - 82, - 97, - 89, - 160, - 130, - 1, - 81, - 97, - 90, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 224, - 133, - 1, - 96, - 128, - 97, - 89, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 5, - 89, - 28, - 127, - 170, - 44, - 158, - 175, - 28, - 149, - 115, - 168, - 75, - 221, - 236, - 48, - 50, - 25, - 171, - 244, - 150, - 175, - 8, - 153, - 237, - 67, - 136, - 83, - 34, - 125, - 208, - 86, - 97, - 90, - 96, - 131, - 1, - 82, - 127, - 44, - 250, - 36, - 253, - 229, - 118, - 117, - 11, - 64, - 54, - 223, - 254, - 64, - 16, - 94, - 107, - 114, - 68, - 246, - 56, - 67, - 236, - 116, - 217, - 208, - 170, - 212, - 139, - 164, - 19, - 40, - 124, - 97, - 90, - 128, - 131, - 1, - 82, - 97, - 77, - 160, - 130, - 1, - 81, - 97, - 90, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 96, - 133, - 1, - 96, - 96, - 97, - 90, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 224, - 130, - 1, - 81, - 97, - 90, - 192, - 131, - 1, - 82, - 97, - 90, - 0, - 130, - 1, - 81, - 97, - 90, - 224, - 131, - 1, - 82, - 97, - 90, - 96, - 130, - 1, - 81, - 97, - 91, - 0, - 131, - 1, - 82, - 97, - 90, - 128, - 130, - 1, - 81, - 97, - 91, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 192, - 133, - 1, - 96, - 128, - 97, - 90, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, - 206, - 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, - 97, - 91, - 64, - 131, - 1, - 82, - 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, - 45, - 114, - 246, - 147, - 102, - 25, - 151, - 72, - 10, - 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, - 97, - 91, - 96, - 131, - 1, - 82, - 97, - 77, - 192, - 130, - 1, - 81, - 97, - 91, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 64, - 133, - 1, - 96, - 96, - 97, - 91, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 90, - 192, - 130, - 1, - 81, - 97, - 91, - 160, - 131, - 1, - 82, - 97, - 90, - 224, - 130, - 1, - 81, - 97, - 91, - 192, - 131, - 1, - 82, - 97, - 91, - 64, - 130, - 1, - 81, - 97, - 91, - 224, - 131, - 1, - 82, - 97, - 91, - 96, - 130, - 1, - 81, - 97, - 92, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 160, - 133, - 1, - 96, - 128, - 97, - 91, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 25, - 32, - 107, - 235, - 197, - 204, - 74, - 91, - 105, - 44, - 88, - 188, - 97, - 231, - 174, - 198, - 211, - 251, - 184, - 52, - 78, - 57, - 161, - 51, - 105, - 159, - 116, - 230, - 244, - 14, - 194, - 168, - 97, - 92, - 32, - 131, - 1, - 82, - 127, - 6, - 120, - 199, - 189, - 209, - 65, - 189, - 38, - 203, - 233, - 51, - 111, - 93, - 207, - 28, - 90, - 140, - 242, - 26, - 89, - 39, - 175, - 209, - 178, - 243, - 147, - 21, - 46, - 224, - 42, - 106, - 120, - 97, - 92, - 64, - 131, - 1, - 82, - 97, - 77, - 224, - 130, - 1, - 81, - 97, - 92, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 32, - 133, - 1, - 96, - 96, - 97, - 92, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 91, - 160, - 130, - 1, - 81, - 97, - 92, - 128, - 131, - 1, - 82, - 97, - 91, - 192, - 130, - 1, - 81, - 97, - 92, - 160, - 131, - 1, - 82, - 97, - 92, - 32, - 130, - 1, - 81, - 97, - 92, - 192, - 131, - 1, - 82, - 97, - 92, - 64, - 130, - 1, - 81, - 97, - 92, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 128, - 133, - 1, - 96, - 128, - 97, - 92, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 28, - 110, - 35, - 67, - 51, - 55, - 131, - 180, - 244, - 138, - 231, - 210, - 104, - 26, - 251, - 60, - 223, - 106, - 77, - 251, - 200, - 58, - 80, - 12, - 176, - 109, - 179, - 38, - 90, - 211, - 229, - 213, - 97, - 93, - 0, - 131, - 1, - 82, - 127, - 26, - 61, - 131, - 109, - 67, - 37, - 255, - 48, - 20, - 76, - 30, - 32, - 56, - 164, - 212, - 2, - 95, - 208, - 240, - 26, - 242, - 76, - 253, - 141, - 253, - 84, - 1, - 142, - 100, - 243, - 176, - 152, - 97, - 93, - 32, - 131, - 1, - 82, - 97, - 78, - 0, - 130, - 1, - 81, - 97, - 93, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 0, - 133, - 1, - 96, - 96, - 97, - 93, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 92, - 128, - 130, - 1, - 81, - 97, - 93, - 96, - 131, - 1, - 82, - 97, - 92, - 160, - 130, - 1, - 81, - 97, - 93, - 128, - 131, - 1, - 82, - 97, - 93, - 0, - 130, - 1, - 81, - 97, - 93, - 160, - 131, - 1, - 82, - 97, - 93, - 32, - 130, - 1, - 81, - 97, - 93, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 96, - 133, - 1, - 96, - 128, - 97, - 93, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 32, - 59, - 33, - 166, - 72, - 251, - 251, - 150, - 69, - 150, - 64, - 187, - 197, - 180, - 24, - 82, - 221, - 30, - 252, - 18, - 9, - 200, - 155, - 99, - 91, - 166, - 56, - 220, - 185, - 41, - 218, - 107, - 97, - 93, - 224, - 131, - 1, - 82, - 127, - 4, - 231, - 0, - 47, - 6, - 242, - 9, - 26, - 68, - 175, - 205, - 49, - 30, - 147, - 194, - 47, - 70, - 221, - 159, - 50, - 7, - 181, - 188, - 195, - 79, - 12, - 167, - 101, - 32, - 152, - 240, - 151, - 97, - 94, - 0, - 131, - 1, - 82, - 97, - 78, - 32, - 130, - 1, - 81, - 97, - 94, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 224, - 133, - 1, - 96, - 96, - 97, - 93, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 93, - 96, - 130, - 1, - 81, - 97, - 94, - 64, - 131, - 1, - 82, - 97, - 93, - 128, - 130, - 1, - 81, - 97, - 94, - 96, - 131, - 1, - 82, - 97, - 93, - 224, - 130, - 1, - 81, - 97, - 94, - 128, - 131, - 1, - 82, - 97, - 94, - 0, - 130, - 1, - 81, - 97, - 94, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 64, - 133, - 1, - 96, - 128, - 97, - 94, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 32, - 171, - 116, - 144, - 180, - 47, - 63, - 123, - 43, - 11, - 190, - 96, - 26, - 9, - 215, - 46, - 233, - 63, - 146, - 72, - 1, - 213, - 151, - 244, - 140, - 242, - 212, - 67, - 117, - 29, - 95, - 145, - 97, - 94, - 192, - 131, - 1, - 82, - 127, - 43, - 202, - 47, - 23, - 98, - 148, - 106, - 5, - 251, - 22, - 50, - 85, - 12, - 108, - 177, - 44, - 2, - 209, - 141, - 155, - 238, - 91, - 221, - 66, - 18, - 202, - 115, - 66, - 136, - 135, - 32, - 253, - 97, - 94, - 224, - 131, - 1, - 82, - 97, - 78, - 64, - 130, - 1, - 81, - 97, - 95, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 192, - 133, - 1, - 96, - 96, - 97, - 94, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, - 81, - 97, - 95, - 32, - 131, - 1, - 82, - 97, - 94, - 96, - 130, - 1, - 81, - 97, - 95, - 64, - 131, - 1, - 82, - 97, - 94, - 192, - 130, - 1, - 81, - 97, - 95, - 96, - 131, - 1, - 82, - 97, - 94, - 224, - 130, - 1, - 81, - 97, - 95, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 32, - 133, - 1, - 96, - 128, - 97, - 95, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 9, - 227, - 48, - 50, - 69, - 227, - 176, - 10, - 202, - 137, - 78, - 159, - 186, - 61, - 81, - 132, - 255, - 55, - 57, - 198, - 100, - 227, - 99, - 242, - 5, - 212, - 47, - 238, - 227, - 39, - 182, - 170, - 97, - 95, - 160, - 131, - 1, - 82, - 127, - 19, - 206, - 146, - 40, - 60, - 198, - 246, - 72, - 189, - 218, - 134, - 24, - 45, - 145, - 133, - 42, - 171, - 92, - 96, - 136, - 171, - 0, - 141, - 156, - 219, - 85, - 34, - 252, - 191, - 92, - 98, - 137, - 97, - 95, - 192, - 131, - 1, - 82, - 97, - 78, - 96, - 130, - 1, - 81, - 97, - 95, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 160, - 133, - 1, - 96, - 96, - 97, - 95, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 95, - 32, - 130, - 1, - 81, - 97, - 96, - 0, - 131, - 1, - 82, - 97, - 95, - 64, - 130, - 1, - 81, - 97, - 96, - 32, - 131, - 1, - 82, - 97, - 95, - 160, - 130, - 1, - 81, - 97, - 96, - 64, - 131, - 1, - 82, - 97, - 95, - 192, - 130, - 1, - 81, - 97, - 96, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 0, - 133, - 1, - 96, - 128, - 97, - 96, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 8, - 165, - 3, - 231, - 161, - 102, - 132, - 168, - 25, - 145, - 219, - 252, - 94, - 200, - 76, - 159, - 75, - 15, - 122, - 80, - 109, - 223, - 38, - 182, - 125, - 48, - 94, - 191, - 192, - 248, - 23, - 67, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 8, - 162, - 216, - 225, - 118, - 15, - 251, - 22, - 247, - 1, - 71, - 248, - 180, - 78, - 120, - 28, - 237, - 101, - 161, - 230, - 119, - 167, - 134, - 205, - 216, - 188, - 159, - 148, - 123, - 54, - 19, - 28, - 97, - 96, - 160, - 131, - 1, - 82, - 97, - 78, - 128, - 130, - 1, - 81, - 97, - 96, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 128, - 133, - 1, - 96, - 96, - 97, - 96, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 0, - 130, - 1, - 81, - 97, - 96, - 224, - 131, - 1, - 82, - 97, - 96, - 32, - 130, - 1, - 81, - 97, - 97, - 0, - 131, - 1, - 82, - 97, - 96, - 128, - 130, - 1, - 81, - 97, - 97, - 32, - 131, - 1, - 82, - 97, - 96, - 160, - 130, - 1, - 81, - 97, - 97, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 224, - 133, - 1, - 96, - 128, - 97, - 96, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 37, - 99, - 43, - 200, - 1, - 44, - 108, - 188, - 109, - 221, - 166, - 97, - 169, - 114, - 159, - 84, - 76, - 84, - 98, - 7, - 0, - 195, - 132, - 12, - 1, - 202, - 91, - 87, - 230, - 26, - 31, - 254, - 97, - 97, - 96, - 131, - 1, - 82, - 127, - 43, - 165, - 118, - 76, - 102, - 58, - 75, - 40, - 146, - 52, - 60, - 48, - 61, - 160, - 245, - 102, - 78, - 63, - 98, - 13, - 214, - 184, - 81, - 167, - 17, - 120, - 23, - 4, - 41, - 47, - 209, - 26, - 97, - 97, - 128, - 131, - 1, - 82, - 97, - 78, - 160, - 130, - 1, - 81, - 97, - 97, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 96, - 133, - 1, - 96, - 96, - 97, - 97, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 224, - 130, - 1, - 81, - 97, - 97, - 192, - 131, - 1, - 82, - 97, - 97, - 0, - 130, - 1, - 81, - 97, - 97, - 224, - 131, - 1, - 82, - 97, - 97, - 96, - 130, - 1, - 81, - 97, - 98, - 0, - 131, - 1, - 82, - 97, - 97, - 128, - 130, - 1, - 81, - 97, - 98, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 192, - 133, - 1, - 96, - 128, - 97, - 97, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 207, - 228, - 243, - 21, - 43, - 25, - 150, - 232, - 234, - 253, - 113, - 132, - 81, - 53, - 108, - 32, - 68, - 228, - 194, - 57, - 252, - 194, - 158, - 179, - 168, - 29, - 57, - 46, - 27, - 68, - 173, - 97, - 98, - 64, - 131, - 1, - 82, - 127, - 37, - 86, - 115, - 226, - 36, - 165, - 148, - 229, - 63, - 213, - 177, - 180, - 220, - 212, - 99, - 41, - 231, - 42, - 4, - 225, - 96, - 86, - 222, - 163, - 213, - 161, - 126, - 49, - 41, - 26, - 153, - 96, - 97, - 98, - 96, - 131, - 1, - 82, - 97, - 78, - 192, - 130, - 1, - 81, - 97, - 98, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 64, - 133, - 1, - 96, - 96, - 97, - 98, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 97, - 192, - 130, - 1, - 81, - 97, - 98, - 160, - 131, - 1, - 82, - 97, - 97, - 224, - 130, - 1, - 81, - 97, - 98, - 192, - 131, - 1, - 82, - 97, - 98, - 64, - 130, - 1, - 81, - 97, - 98, - 224, - 131, - 1, - 82, - 97, - 98, - 96, - 130, - 1, - 81, - 97, - 99, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 160, - 133, - 1, - 96, - 128, - 97, - 98, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 19, - 108, - 177, - 75, - 53, - 31, - 59, - 67, - 181, - 230, - 24, - 197, - 196, - 144, - 34, - 88, - 142, - 221, - 72, - 85, - 15, - 78, - 125, - 105, - 48, - 148, - 66, - 232, - 184, - 61, - 13, - 34, - 97, - 99, - 32, - 131, - 1, - 82, - 127, - 14, - 233, - 187, - 223, - 206, - 147, - 129, - 94, - 121, - 170, - 191, - 197, - 236, - 146, - 165, - 35, - 70, - 196, - 106, - 69, - 225, - 123, - 197, - 188, - 154, - 216, - 21, - 94, - 152, - 44, - 156, - 172, - 97, - 99, - 64, - 131, - 1, - 82, - 97, - 78, - 224, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, - 128, - 131, - 1, - 82, - 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, - 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, - 82, - 17, - 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 100, - 0, - 131, - 1, - 82, - 127, - 2, - 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, - 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 79, - 0, - 130, - 1, - 81, - 97, - 100, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 0, - 133, - 1, - 96, - 96, - 97, - 100, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 99, - 128, - 130, - 1, - 81, - 97, - 100, - 96, - 131, - 1, - 82, - 97, - 99, - 160, - 130, - 1, - 81, - 97, - 100, - 128, - 131, - 1, - 82, - 97, - 100, - 0, - 130, - 1, - 81, - 97, - 100, - 160, - 131, - 1, - 82, - 97, - 100, - 32, - 130, - 1, - 81, - 97, - 100, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 96, - 133, - 1, - 96, - 128, - 97, - 100, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 31, - 93, - 105, - 248, - 173, - 199, - 222, - 243, - 83, - 202, - 197, - 48, - 19, - 49, - 246, - 106, - 106, - 161, - 44, - 59, - 220, - 70, - 186, - 133, - 9, - 216, - 28, - 25, - 34, - 148, - 76, - 30, - 97, - 100, - 224, - 131, - 1, - 82, - 127, - 5, - 10, - 53, - 140, - 142, - 231, - 73, - 1, - 175, - 214, - 190, - 189, - 218, - 53, - 162, - 91, - 233, - 155, - 166, - 49, - 35, - 42, - 190, - 192, - 187, - 125, - 242, - 52, - 40, - 226, - 25, - 235, - 97, - 101, - 0, - 131, - 1, - 82, - 97, - 79, - 32, - 130, - 1, - 81, - 97, - 101, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 224, - 133, - 1, - 96, - 96, - 97, - 100, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 100, - 96, - 130, - 1, - 81, - 97, - 101, - 64, - 131, - 1, - 82, - 97, - 100, - 128, - 130, - 1, - 81, - 97, - 101, - 96, - 131, - 1, - 82, - 97, - 100, - 224, - 130, - 1, - 81, - 97, - 101, - 128, - 131, - 1, - 82, - 97, - 101, - 0, - 130, - 1, - 81, - 97, - 101, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 64, - 133, - 1, - 96, - 128, - 97, - 101, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 29, - 219, - 249, - 28, - 238, - 237, - 136, - 168, - 198, - 110, - 155, - 248, - 208, - 137, - 179, - 9, - 141, - 192, - 131, - 241, - 87, - 144, - 135, - 7, - 150, - 167, - 38, - 127, - 37, - 207, - 155, - 240, - 97, - 101, - 192, - 131, - 1, - 82, - 127, - 10, - 180, - 232, - 11, - 0, - 145, - 205, - 64, - 7, - 2, - 148, - 247, - 84, - 229, - 75, - 18, - 126, - 32, - 0, - 87, - 44, - 3, - 68, - 194, - 131, - 138, - 238, - 175, - 37, - 30, - 179, - 145, - 97, - 101, - 224, - 131, - 1, - 82, - 97, - 79, - 64, - 130, - 1, - 81, - 97, - 102, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 192, - 133, - 1, - 96, - 96, - 97, - 101, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, - 1, - 81, - 97, - 102, - 32, - 131, - 1, - 82, - 97, - 101, - 96, - 130, - 1, - 81, - 97, - 102, - 64, - 131, - 1, - 82, - 97, - 101, - 192, - 130, - 1, - 81, - 97, - 102, - 96, - 131, - 1, - 82, - 97, - 101, - 224, - 130, - 1, - 81, - 97, - 102, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 32, - 133, - 1, - 96, - 128, - 97, - 102, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 96, - 130, - 1, - 81, - 97, - 102, - 160, - 131, - 1, - 82, - 97, - 4, - 128, - 130, - 1, - 81, - 97, - 102, - 192, - 131, - 1, - 82, - 97, - 79, - 96, - 130, - 1, - 81, - 97, - 102, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 160, - 133, - 1, - 96, - 96, - 97, - 102, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 102, - 32, - 130, - 1, - 81, - 97, - 103, - 0, - 131, - 1, - 82, - 97, - 102, - 64, - 130, - 1, - 81, - 97, - 103, - 32, - 131, - 1, - 82, - 97, - 102, - 160, - 130, - 1, - 81, - 97, - 103, - 64, - 131, - 1, - 82, - 97, - 102, - 192, - 130, - 1, - 81, - 97, - 103, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 0, - 133, - 1, - 96, - 128, - 97, - 103, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 160, - 130, - 1, - 81, - 97, - 103, - 128, - 131, - 1, - 82, - 97, - 4, - 192, - 130, - 1, - 81, - 97, - 103, - 160, - 131, - 1, - 82, - 97, - 79, - 128, - 130, - 1, - 81, - 97, - 103, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 133, - 1, - 96, - 96, - 97, - 103, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 0, - 130, - 1, - 81, - 97, - 103, - 224, - 131, - 1, - 82, - 97, - 103, - 32, - 130, - 1, - 81, - 97, - 104, - 0, - 131, - 1, - 82, - 97, - 103, - 128, - 130, - 1, - 81, - 97, - 104, - 32, - 131, - 1, - 82, - 97, - 103, - 160, - 130, - 1, - 81, - 97, - 104, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 103, - 224, - 133, - 1, - 96, - 128, - 97, - 103, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 224, - 130, - 1, - 81, - 97, - 104, - 96, - 131, - 1, - 82, - 97, - 5, - 0, - 130, - 1, - 81, - 97, - 104, - 128, - 131, - 1, - 82, - 97, - 79, - 160, - 130, - 1, - 81, - 97, - 104, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 96, - 133, - 1, - 96, - 96, - 97, - 104, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 103, - 224, - 130, - 1, - 81, - 97, - 104, - 192, - 131, - 1, - 82, - 97, - 104, - 0, - 130, - 1, - 81, - 97, - 104, - 224, - 131, - 1, - 82, - 97, - 104, - 96, - 130, - 1, - 81, - 97, - 105, - 0, - 131, - 1, - 82, - 97, - 104, - 128, - 130, - 1, - 81, - 97, - 105, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 104, - 192, - 133, - 1, - 96, - 128, - 97, - 104, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 32, - 130, - 1, - 81, - 97, - 105, - 64, - 131, - 1, - 82, - 97, - 5, - 64, - 130, - 1, - 81, - 97, - 105, - 96, - 131, - 1, - 82, - 97, - 79, - 192, - 130, - 1, - 81, - 97, - 105, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 64, - 133, - 1, - 96, - 96, - 97, - 105, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 104, - 192, - 130, - 1, - 81, - 97, - 105, - 160, - 131, - 1, - 82, - 97, - 104, - 224, - 130, - 1, - 81, - 97, - 105, - 192, - 131, - 1, - 82, - 97, - 105, - 64, - 130, - 1, - 81, - 97, - 105, - 224, - 131, - 1, - 82, - 97, - 105, - 96, - 130, - 1, - 81, - 97, - 106, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 105, - 160, - 133, - 1, - 96, - 128, - 97, - 105, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 96, - 130, - 1, - 81, - 97, - 106, - 32, - 131, - 1, - 82, - 97, - 5, - 128, - 130, - 1, - 81, - 97, - 106, - 64, - 131, - 1, - 82, - 97, - 79, - 224, - 130, - 1, - 81, - 97, - 106, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 32, - 133, - 1, - 96, - 96, - 97, - 106, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 105, - 160, - 130, - 1, - 81, - 97, - 106, - 128, - 131, - 1, - 82, - 97, - 105, - 192, - 130, - 1, - 81, - 97, - 106, - 160, - 131, - 1, - 82, - 97, - 106, - 32, - 130, - 1, - 81, - 97, - 106, - 192, - 131, - 1, - 82, - 97, - 106, - 64, - 130, - 1, - 81, - 97, - 106, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 106, - 128, - 133, - 1, - 96, - 128, - 97, - 106, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 192, - 130, - 1, - 81, - 97, - 107, - 0, - 131, - 1, - 82, - 97, - 3, - 224, - 130, - 1, - 81, - 97, - 107, - 32, - 131, - 1, - 82, - 97, - 80, - 0, - 130, - 1, - 81, - 97, - 107, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 0, - 133, - 1, - 96, - 96, - 97, - 107, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 106, - 128, - 130, - 1, - 81, - 97, - 107, - 96, - 131, - 1, - 82, - 97, - 106, - 160, - 130, - 1, - 81, - 97, - 107, - 128, - 131, - 1, - 82, - 97, - 107, - 0, - 130, - 1, - 81, - 97, - 107, - 160, - 131, - 1, - 82, - 97, - 107, - 32, - 130, - 1, - 81, - 97, - 107, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 96, - 133, - 1, - 96, - 128, - 97, - 107, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 0, - 130, - 1, - 81, - 97, - 107, - 224, - 131, - 1, - 82, - 97, - 3, - 32, - 130, - 1, - 81, - 97, - 108, - 0, - 131, - 1, - 82, - 97, - 81, - 0, - 130, - 1, - 81, - 97, - 108, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 107, - 224, - 133, - 1, - 96, - 96, - 97, - 107, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 107, - 96, - 130, - 1, - 81, - 97, - 108, - 64, - 131, - 1, - 82, - 97, - 107, - 128, - 130, - 1, - 81, - 97, - 108, - 96, - 131, - 1, - 82, - 97, - 107, - 224, - 130, - 1, - 81, - 97, - 108, - 128, - 131, - 1, - 82, - 97, - 108, - 0, - 130, - 1, - 81, - 97, - 108, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 64, - 133, - 1, - 96, - 128, - 97, - 108, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 64, - 130, - 1, - 81, - 97, - 108, - 192, - 131, - 1, - 82, - 97, - 3, - 96, - 130, - 1, - 81, - 97, - 108, - 224, - 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, - 81, - 97, - 109, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 108, - 192, - 133, - 1, - 96, - 96, - 97, - 108, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 108, - 64, - 130, - 1, - 81, - 97, - 109, - 32, - 131, - 1, - 82, - 97, - 108, - 96, - 130, - 1, - 81, - 97, - 109, - 64, - 131, - 1, - 82, - 97, - 108, - 192, - 130, - 1, - 81, - 97, - 109, - 96, - 131, - 1, - 82, - 97, - 108, - 224, - 130, - 1, - 81, - 97, - 109, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 32, - 133, - 1, - 96, - 128, - 97, - 109, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 128, - 130, - 1, - 81, - 97, - 109, - 160, - 131, - 1, - 82, - 97, - 3, - 160, - 130, - 1, - 81, - 97, - 109, - 192, - 131, - 1, - 82, - 97, - 82, - 192, - 130, - 1, - 81, - 97, - 109, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 109, - 160, - 133, - 1, - 96, - 96, - 97, - 109, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 109, - 32, - 130, - 1, - 81, - 97, - 110, - 0, - 131, - 1, - 82, - 97, - 109, - 64, - 130, - 1, - 81, - 97, - 110, - 32, - 131, - 1, - 82, - 97, - 109, - 160, - 130, - 1, - 81, - 97, - 110, - 64, - 131, - 1, - 82, - 97, - 109, - 192, - 130, - 1, - 81, - 97, - 110, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 0, - 133, - 1, - 96, - 128, - 97, - 110, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 192, - 130, - 1, - 81, - 97, - 110, - 128, - 131, - 1, - 82, - 97, - 1, - 224, - 130, - 1, - 81, - 97, - 110, - 160, - 131, - 1, - 82, - 97, - 83, - 192, - 130, - 1, - 81, - 97, - 110, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 128, - 133, - 1, - 96, - 96, - 97, - 110, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 110, - 0, - 130, - 1, - 81, - 97, - 110, - 224, - 131, - 1, - 82, - 97, - 110, - 32, - 130, - 1, - 81, - 97, - 111, - 0, - 131, - 1, - 82, - 97, - 110, - 128, - 130, - 1, - 81, - 97, - 111, - 32, - 131, - 1, - 82, - 97, - 110, - 160, - 130, - 1, - 81, - 97, - 111, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 110, - 224, - 133, - 1, - 96, - 128, - 97, - 110, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 11, - 32, - 130, - 1, - 81, - 97, - 111, - 96, - 131, - 1, - 82, - 97, - 11, - 64, - 130, - 1, - 81, - 97, - 111, - 128, - 131, - 1, - 82, - 97, - 84, - 0, - 130, - 1, - 81, - 129, - 3, - 97, - 111, - 160, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 96, - 132, - 1, - 96, - 96, - 97, - 111, - 96, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 110, - 224, - 129, - 1, - 81, - 97, - 111, - 192, - 130, - 1, - 82, - 97, - 111, - 0, - 129, - 1, - 81, - 97, - 111, - 224, - 130, - 1, - 82, - 97, - 111, - 96, - 129, - 1, - 81, - 97, - 112, - 0, - 130, - 1, - 82, - 97, - 111, - 128, - 129, - 1, - 81, - 97, - 112, - 32, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 111, - 192, - 132, - 1, - 96, - 128, - 97, - 111, - 192, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 112, - 64, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 112, - 96, - 130, - 1, - 82, - 97, - 84, - 32, - 129, - 1, - 81, - 97, - 112, - 128, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 64, - 132, - 1, - 96, - 96, - 97, - 112, - 64, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 111, - 192, - 129, - 1, - 81, - 97, - 112, - 160, - 130, - 1, - 82, - 97, - 111, - 224, - 129, - 1, - 81, - 97, - 112, - 192, - 130, - 1, - 82, - 97, - 112, - 64, - 129, - 1, - 81, - 97, - 112, - 224, - 130, - 1, - 82, - 97, - 112, - 96, - 129, - 1, - 81, - 97, - 113, - 0, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 112, - 160, - 132, - 1, - 96, - 128, - 97, - 112, - 160, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 112, - 160, - 129, - 1, - 81, - 97, - 113, - 32, - 130, - 1, - 82, - 97, - 112, - 192, - 129, - 1, - 81, - 97, - 113, - 64, - 130, - 1, - 82, - 127, - 25, - 142, - 147, - 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, - 133, - 183, - 174, - 243, - 18, - 194, - 97, - 113, + 182, + 87, 96, - 130, - 1, - 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, - 70, - 222, - 189, - 92, - 217, - 146, - 246, - 237, - 97, - 113, - 128, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, - 85, - 172, - 218, - 220, - 209, - 34, - 151, - 91, - 97, - 113, - 160, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 113, - 192, - 130, - 1, - 82, - 97, - 11, - 192, - 129, - 1, - 81, - 97, - 113, - 224, - 130, - 1, - 82, - 97, - 11, - 224, - 129, - 1, - 81, - 97, - 114, 0, + 128, + 253, + 91, + 96, + 32, 130, - 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, - 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, - 97, - 114, - 32, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, - 4, - 130, - 196, - 33, - 82, - 168, - 137, - 144, - 39, - 113, - 105, - 137, - 166, - 153, - 108, - 37, + 1, 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, 97, - 114, + 3, + 0, + 82, + 96, 64, 130, 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, - 2, - 33, - 193, - 69, + 53, 97, - 114, + 3, + 32, + 82, + 96, 96, 130, 1, + 53, + 97, + 3, + 64, 82, - 127, - 43, - 28, - 187, - 62, - 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, 96, - 17, - 222, - 255, - 97, - 114, 128, 130, 1, - 82, - 129, + 53, + 97, + 3, 96, - 1, + 82, 96, 32, - 97, - 113, - 32, - 132, + 128, + 130, + 2, + 131, 1, - 97, 1, + 145, + 80, + 80, 128, - 97, - 113, - 32, - 134, - 1, + 53, 96, - 8, - 90, - 250, - 97, - 113, 32, - 147, - 144, - 147, - 1, - 81, + 129, + 2, + 131, + 4, 96, - 1, - 20, - 146, + 4, 20, + 132, 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, + 147, 80, - 86, + 131, + 97, + 1, + 254, + 87, + 96, + 0, + 128, + 253, 91, 96, + 0, + 91, + 129, + 129, + 16, + 21, + 97, + 2, + 226, + 87, + 97, + 2, 64, 81, + 96, 128, + 82, 97, - 114, - 128, - 1, + 2, 96, - 64, + 81, + 96, + 160, 82, - 128, - 97, + 96, + 32, + 129, + 129, + 2, + 132, + 1, + 1, + 53, + 134, 3, - 148, + 96, + 192, + 129, 144, + 82, 96, - 32, + 64, 130, 2, - 128, - 54, - 131, - 55, + 97, + 2, + 53, + 130, + 136, + 97, + 0, + 174, + 86, + 91, + 135, + 22, + 150, 80, + 134, + 97, + 2, + 67, + 87, + 96, + 0, + 128, + 253, + 91, + 128, + 96, + 2, + 135, + 4, + 96, + 164, + 1, + 1, 145, - 146, - 145, - 80, 80, + 97, + 2, + 89, + 137, + 131, + 137, + 97, + 0, + 94, 86, 91, - 99, - 78, - 72, - 123, - 113, + 150, + 80, + 134, + 97, + 2, + 101, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 130, + 1, + 53, + 145, + 53, + 97, + 2, + 119, + 131, + 130, + 138, + 97, + 0, + 143, + 86, + 91, + 151, + 80, + 80, + 134, + 97, + 2, + 132, + 87, 96, - 224, - 27, + 0, + 128, + 253, + 91, 96, + 128, + 81, + 97, + 2, 0, 82, 96, - 65, - 96, - 4, + 160, + 81, + 97, + 2, + 32, 82, 96, - 36, + 164, + 1, + 144, + 80, + 97, + 2, + 162, + 136, + 130, + 136, + 97, + 0, + 94, + 86, + 91, + 149, + 80, + 133, + 97, + 2, + 174, + 87, 96, 0, + 128, 253, 91, + 128, + 53, 96, - 64, - 81, - 96, - 31, + 32, 130, 1, - 96, - 31, - 25, - 22, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, + 53, + 145, + 80, + 97, + 2, + 202, 130, 130, - 16, - 23, - 21, 97, - 84, - 128, - 87, + 2, + 32, + 81, + 97, + 2, + 0, + 81, + 139, + 97, + 0, + 201, + 86, + 91, + 135, + 22, + 150, + 80, + 80, + 80, + 132, 97, - 84, + 2, + 218, + 87, + 96, + 0, 128, + 253, + 91, + 96, + 1, + 1, 97, - 84, - 65, + 2, + 1, 86, 91, + 80, + 80, + 80, + 80, + 128, 96, - 64, + 0, 82, - 145, - 144, - 80, - 86, + 96, + 32, + 96, + 0, + 243, 91, 96, 0, - 130, + 128, + 131, 96, 31, - 131, + 132, 1, 18, 97, - 84, - 153, + 3, + 2, 87, 96, 0, 128, 253, 91, + 80, 129, 53, 103, @@ -43804,83 +1957,45 @@ pub mod inclusion_verifier { 17, 21, 97, - 84, - 179, + 3, + 26, 87, - 97, - 84, - 179, - 97, - 84, - 65, - 86, - 91, - 97, - 84, - 198, - 96, - 31, - 130, - 1, 96, - 31, - 25, - 22, + 0, + 128, + 253, + 91, 96, 32, + 131, 1, - 97, - 84, - 87, - 86, - 91, - 129, - 129, - 82, - 132, + 145, + 80, + 131, 96, 32, - 131, - 134, + 130, + 96, + 5, + 27, + 133, 1, 1, 17, 21, 97, - 84, - 219, + 3, + 53, 87, 96, 0, 128, 253, 91, - 129, - 96, - 32, - 133, - 1, - 96, - 32, - 131, - 1, - 55, - 96, - 0, - 145, - 129, - 1, - 96, - 32, - 1, - 145, - 144, - 145, - 82, - 147, 146, 80, - 80, + 146, + 144, 80, 86, 91, @@ -43888,22 +2003,58 @@ pub mod inclusion_verifier { 0, 128, 96, - 64, - 131, - 133, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 128, + 136, + 138, 3, 18, 21, 97, - 85, - 11, + 3, + 87, 87, 96, 0, 128, 253, 91, - 130, + 135, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 3, + 110, + 87, + 96, + 0, + 128, + 253, + 91, + 150, + 80, + 96, + 32, + 136, + 1, 53, 103, 255, @@ -43919,8 +2070,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 85, - 35, + 3, + 139, 87, 96, 0, @@ -43928,19 +2079,19 @@ pub mod inclusion_verifier { 253, 91, 129, - 133, + 138, 1, 145, 80, - 133, + 138, 96, 31, 131, 1, 18, 97, - 85, - 55, + 3, + 159, 87, 96, 0, @@ -43949,112 +2100,98 @@ pub mod inclusion_verifier { 91, 129, 53, - 96, - 32, - 130, - 130, + 129, + 129, 17, 21, 97, - 85, - 75, + 3, + 174, 87, - 97, - 85, - 75, - 97, - 84, - 65, - 86, + 96, + 0, + 128, + 253, 91, - 129, + 139, 96, - 5, - 27, - 97, - 85, - 90, - 130, + 32, 130, + 133, 1, + 1, + 17, + 21, 97, - 84, + 3, + 192, 87, - 86, + 96, + 0, + 128, + 253, 91, - 146, + 96, + 32, 131, - 82, - 132, - 129, 1, - 130, + 152, + 80, + 128, + 151, + 80, + 80, + 96, + 64, + 138, 1, - 146, + 53, + 145, + 80, + 128, 130, - 129, - 1, - 144, - 138, - 133, 17, 21, 97, - 85, - 116, + 3, + 222, 87, 96, 0, 128, 253, 91, - 149, - 131, - 1, - 149, - 91, - 132, - 135, - 16, - 21, 97, - 85, - 146, - 87, - 134, - 53, - 130, - 82, - 149, - 131, - 1, - 149, - 144, + 3, + 234, + 139, 131, + 140, 1, - 144, 97, - 85, - 121, + 2, + 240, 86, 91, - 151, - 80, + 144, + 150, 80, + 148, 80, - 134, + 96, + 96, + 138, 1, 53, - 146, - 80, + 145, 80, 128, 130, 17, 21, 97, - 85, - 169, + 4, + 3, 87, 96, 0, @@ -44063,91 +2200,36 @@ pub mod inclusion_verifier { 91, 80, 97, - 85, - 182, - 133, + 4, + 16, + 138, 130, - 134, + 139, 1, 97, - 84, - 136, + 2, + 240, 86, 91, - 145, + 152, + 155, + 151, + 154, 80, + 149, + 152, 80, + 147, + 150, 146, - 80, + 149, 146, - 144, + 147, 80, - 86, - 254, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, 80, - 69, - 182, - 129, - 129, - 88, - 93, - 151, - 129, - 106, - 145, - 104, - 113, - 202, - 141, - 60, - 32, - 140, - 22, - 216, - 124, - 253, - 71, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 1, + 86, + 254, 162, 100, 105, @@ -44158,38 +2240,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 67, - 61, - 67, - 155, - 97, - 108, - 155, - 9, - 132, - 170, - 39, - 61, - 101, - 208, - 59, + 126, + 94, + 18, + 135, + 237, + 192, + 106, + 176, + 138, + 117, + 148, + 175, 188, - 145, - 10, - 87, - 92, - 63, - 198, + 5, + 29, + 238, + 102, 42, - 156, - 80, - 151, - 87, - 123, - 27, - 175, - 252, - 213, + 95, + 89, + 105, + 55, + 42, + 182, + 85, + 202, + 193, + 11, + 170, + 77, + 47, + 178, 100, 115, 111, @@ -44203,9 +2285,8 @@ pub mod inclusion_verifier { 51, ]; ///The deployed bytecode of the contract. - pub static INCLUSIONVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); + pub static INCLUSIONVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); pub struct InclusionVerifier(::ethers::contract::Contract); impl ::core::clone::Clone for InclusionVerifier { fn clone(&self) -> Self { @@ -44225,7 +2306,9 @@ pub mod inclusion_verifier { } impl ::core::fmt::Debug for InclusionVerifier { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(stringify!(InclusionVerifier)).field(&self.address()).finish() + f.debug_tuple(stringify!(InclusionVerifier)) + .field(&self.address()) + .finish() } } impl InclusionVerifier { @@ -44235,13 +2318,11 @@ pub mod inclusion_verifier { address: T, client: ::std::sync::Arc, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - INCLUSIONVERIFIER_ABI.clone(), - client, - ), - ) + Self(::ethers::contract::Contract::new( + address.into(), + INCLUSIONVERIFIER_ABI.clone(), + client, + )) } /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction @@ -44282,24 +2363,27 @@ pub mod inclusion_verifier { let deployer = ::ethers::contract::ContractDeployer::new(deployer); Ok(deployer) } - ///Calls the contract's `verify` (0xbd205a90) function - pub fn verify( + ///Calls the contract's `verifyProof` (0x47f6b5aa) function + pub fn verify_proof( &self, - pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - proof: ::ethers::core::types::Bytes, + vk: ::ethers::core::types::Address, + proofs: ::ethers::core::types::Bytes, + challenges: ::std::vec::Vec<::ethers::core::types::U256>, + values: ::std::vec::Vec<::ethers::core::types::U256>, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([189, 32, 90, 144], (pub_inputs, proof)) + .method_hash([71, 246, 181, 170], (vk, proofs, challenges, values)) .expect("method not found (this should never happen)") } } impl From<::ethers::contract::Contract> - for InclusionVerifier { + for InclusionVerifier + { fn from(contract: ::ethers::contract::Contract) -> Self { Self::new(contract.address(), contract.client()) } } - ///Container type for all input parameters for the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` + ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[],uint256[])` and selector `0x47f6b5aa` #[derive( Clone, ::ethers::contract::EthCall, @@ -44308,14 +2392,19 @@ pub mod inclusion_verifier { Debug, PartialEq, Eq, - Hash + Hash, + )] + #[ethcall( + name = "verifyProof", + abi = "verifyProof(address,bytes,uint256[],uint256[])" )] - #[ethcall(name = "verify", abi = "verify(uint256[],bytes)")] - pub struct VerifyCall { - pub pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - pub proof: ::ethers::core::types::Bytes, + pub struct VerifyProofCall { + pub vk: ::ethers::core::types::Address, + pub proofs: ::ethers::core::types::Bytes, + pub challenges: ::std::vec::Vec<::ethers::core::types::U256>, + pub values: ::std::vec::Vec<::ethers::core::types::U256>, } - ///Container type for all return fields from the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` + ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[],uint256[])` and selector `0x47f6b5aa` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -44324,7 +2413,7 @@ pub mod inclusion_verifier { Debug, PartialEq, Eq, - Hash + Hash, )] - pub struct VerifyReturn(pub bool); + pub struct VerifyProofReturn(pub bool); } diff --git a/backend/src/contracts/generated/mod.rs b/backend/src/contracts/generated/mod.rs index 467f80f0..f152fed3 100644 --- a/backend/src/contracts/generated/mod.rs +++ b/backend/src/contracts/generated/mod.rs @@ -1,2 +1,5 @@ +pub mod grandsum_verifier; +pub mod inclusion_verifier; +pub mod snark_verifier; pub mod summa_contract; -pub mod inclusion_verifier; \ No newline at end of file +pub mod verifying_key; diff --git a/backend/src/contracts/generated/snark_verifier.rs b/backend/src/contracts/generated/snark_verifier.rs new file mode 100644 index 00000000..ffa7a9a5 --- /dev/null +++ b/backend/src/contracts/generated/snark_verifier.rs @@ -0,0 +1,17354 @@ +pub use verifier::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod verifier { + #[rustfmt::skip] + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vk\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"instances\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + ///The parsed JSON ABI of the contract. + pub static VERIFIER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); + #[rustfmt::skip] + const __BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 33, + 136, + 128, + 97, + 0, + 32, + 96, + 0, + 57, + 96, + 0, + 243, + 254, + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 43, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 175, + 131, + 161, + 141, + 20, + 97, + 0, + 48, + 87, + 91, + 96, + 0, + 128, + 253, + 91, + 97, + 0, + 67, + 97, + 0, + 62, + 54, + 96, + 4, + 97, + 32, + 149, + 86, + 91, + 97, + 0, + 87, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 243, + 91, + 96, + 0, + 97, + 2, + 99, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 132, + 53, + 96, + 32, + 134, + 1, + 53, + 136, + 130, + 16, + 134, + 22, + 148, + 80, + 136, + 129, + 16, + 133, + 22, + 148, + 80, + 136, + 96, + 3, + 138, + 139, + 133, + 134, + 9, + 133, + 9, + 8, + 137, + 130, + 131, + 9, + 146, + 137, + 82, + 96, + 32, + 137, + 1, + 145, + 144, + 145, + 82, + 20, + 146, + 144, + 146, + 22, + 150, + 96, + 64, + 148, + 133, + 1, + 150, + 80, + 147, + 144, + 148, + 1, + 147, + 80, + 80, + 80, + 86, + 91, + 96, + 1, + 96, + 32, + 83, + 96, + 33, + 96, + 0, + 144, + 129, + 32, + 146, + 131, + 6, + 130, + 82, + 145, + 144, + 145, + 82, + 96, + 32, + 1, + 144, + 86, + 91, + 96, + 0, + 131, + 131, + 81, + 96, + 32, + 133, + 1, + 91, + 96, + 32, + 135, + 3, + 129, + 16, + 21, + 97, + 0, + 240, + 87, + 135, + 129, + 81, + 131, + 9, + 128, + 132, + 82, + 96, + 32, + 147, + 132, + 1, + 147, + 144, + 146, + 80, + 1, + 97, + 0, + 206, + 86, + 91, + 135, + 129, + 81, + 131, + 9, + 145, + 80, + 96, + 32, + 131, + 82, + 96, + 32, + 128, + 132, + 1, + 82, + 96, + 32, + 96, + 64, + 132, + 1, + 82, + 129, + 96, + 96, + 132, + 1, + 82, + 96, + 2, + 136, + 3, + 96, + 128, + 132, + 1, + 82, + 135, + 96, + 160, + 132, + 1, + 82, + 96, + 32, + 131, + 96, + 192, + 133, + 96, + 5, + 90, + 250, + 133, + 22, + 147, + 80, + 130, + 81, + 145, + 80, + 133, + 96, + 32, + 129, + 1, + 96, + 32, + 133, + 3, + 148, + 80, + 91, + 130, + 129, + 16, + 21, + 97, + 1, + 99, + 87, + 137, + 133, + 81, + 133, + 9, + 138, + 132, + 81, + 134, + 9, + 144, + 132, + 82, + 96, + 31, + 25, + 149, + 134, + 1, + 149, + 144, + 148, + 80, + 144, + 146, + 1, + 145, + 97, + 1, + 59, + 86, + 91, + 137, + 129, + 81, + 133, + 9, + 148, + 80, + 137, + 130, + 81, + 133, + 9, + 148, + 144, + 145, + 82, + 146, + 144, + 146, + 82, + 80, + 144, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 64, + 82, + 130, + 96, + 96, + 82, + 96, + 0, + 96, + 64, + 96, + 0, + 96, + 128, + 96, + 0, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 64, + 82, + 96, + 0, + 96, + 64, + 96, + 0, + 96, + 96, + 96, + 0, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 130, + 96, + 224, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 128, + 96, + 128, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 96, + 96, + 96, + 128, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 0, + 82, + 130, + 96, + 32, + 82, + 97, + 11, + 64, + 81, + 96, + 64, + 82, + 97, + 11, + 96, + 81, + 96, + 96, + 82, + 97, + 11, + 128, + 81, + 96, + 128, + 82, + 97, + 11, + 160, + 81, + 96, + 160, + 82, + 131, + 96, + 192, + 82, + 132, + 96, + 224, + 82, + 97, + 11, + 192, + 81, + 97, + 1, + 0, + 82, + 97, + 11, + 224, + 81, + 97, + 1, + 32, + 82, + 97, + 12, + 0, + 81, + 97, + 1, + 64, + 82, + 97, + 12, + 32, + 81, + 97, + 1, + 96, + 82, + 96, + 0, + 96, + 32, + 96, + 0, + 97, + 1, + 128, + 96, + 0, + 96, + 8, + 90, + 250, + 96, + 0, + 81, + 146, + 22, + 144, + 145, + 22, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, + 1, + 96, + 1, + 97, + 5, + 96, + 96, + 0, + 97, + 9, + 160, + 139, + 60, + 96, + 100, + 53, + 97, + 21, + 0, + 20, + 129, + 22, + 144, + 80, + 97, + 10, + 96, + 81, + 97, + 21, + 132, + 53, + 129, + 20, + 130, + 22, + 145, + 80, + 97, + 9, + 160, + 81, + 96, + 0, + 82, + 96, + 32, + 97, + 21, + 164, + 130, + 96, + 32, + 2, + 129, + 1, + 91, + 128, + 130, + 16, + 21, + 97, + 3, + 0, + 87, + 129, + 53, + 128, + 132, + 82, + 134, + 17, + 148, + 144, + 148, + 22, + 147, + 96, + 32, + 146, + 131, + 1, + 146, + 144, + 145, + 1, + 144, + 97, + 2, + 221, + 86, + 91, + 80, + 96, + 132, + 146, + 80, + 97, + 15, + 0, + 144, + 80, + 97, + 3, + 68, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 45, + 87, + 97, + 3, + 34, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 14, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 4, + 0, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 101, + 87, + 97, + 3, + 90, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 70, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 3, + 130, + 133, + 130, + 97, + 0, + 169, + 86, + 91, + 144, + 80, + 97, + 3, + 128, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 169, + 87, + 97, + 3, + 158, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 138, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 96, + 192, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 224, + 87, + 97, + 3, + 213, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 193, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 9, + 128, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 4, + 28, + 87, + 131, + 53, + 128, + 132, + 82, + 134, + 17, + 148, + 144, + 148, + 22, + 147, + 96, + 32, + 147, + 132, + 1, + 147, + 144, + 146, + 1, + 145, + 97, + 3, + 249, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 4, + 57, + 133, + 130, + 97, + 0, + 169, + 86, + 91, + 144, + 80, + 97, + 4, + 71, + 134, + 131, + 133, + 135, + 97, + 0, + 94, + 86, + 91, + 96, + 0, + 144, + 129, + 32, + 136, + 129, + 6, + 144, + 148, + 82, + 146, + 144, + 146, + 82, + 147, + 80, + 145, + 80, + 96, + 32, + 144, + 80, + 97, + 4, + 106, + 133, + 130, + 132, + 134, + 97, + 0, + 94, + 86, + 91, + 146, + 80, + 146, + 80, + 146, + 80, + 80, + 80, + 97, + 10, + 128, + 81, + 21, + 97, + 5, + 55, + 87, + 97, + 10, + 192, + 81, + 97, + 10, + 224, + 81, + 96, + 32, + 97, + 10, + 160, + 81, + 2, + 97, + 21, + 164, + 1, + 96, + 32, + 131, + 2, + 96, + 2, + 129, + 2, + 96, + 3, + 130, + 2, + 131, + 53, + 131, + 133, + 1, + 53, + 131, + 134, + 1, + 53, + 131, + 135, + 1, + 53, + 137, + 96, + 32, + 2, + 136, + 1, + 137, + 91, + 129, + 138, + 16, + 21, + 97, + 4, + 238, + 87, + 96, + 32, + 138, + 1, + 153, + 80, + 137, + 53, + 129, + 27, + 134, + 1, + 149, + 80, + 136, + 138, + 1, + 53, + 129, + 27, + 133, + 1, + 148, + 80, + 135, + 138, + 1, + 53, + 129, + 27, + 132, + 1, + 147, + 80, + 134, + 138, + 1, + 53, + 129, + 27, + 131, + 1, + 146, + 80, + 138, + 129, + 1, + 144, + 80, + 97, + 4, + 176, + 86, + 91, + 80, + 80, + 140, + 96, + 3, + 142, + 143, + 135, + 136, + 9, + 135, + 9, + 8, + 141, + 132, + 133, + 9, + 20, + 139, + 22, + 154, + 80, + 140, + 96, + 3, + 142, + 143, + 133, + 134, + 9, + 133, + 9, + 8, + 141, + 130, + 131, + 9, + 20, + 139, + 22, + 154, + 80, + 131, + 97, + 16, + 0, + 82, + 130, + 97, + 16, + 32, + 82, + 129, + 97, + 16, + 64, + 82, + 128, + 97, + 16, + 96, + 82, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 91, + 128, + 97, + 5, + 65, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 9, + 192, + 81, + 146, + 80, + 97, + 15, + 128, + 81, + 128, + 96, + 0, + 91, + 133, + 129, + 16, + 21, + 97, + 5, + 101, + 87, + 132, + 130, + 131, + 9, + 145, + 80, + 96, + 1, + 1, + 97, + 5, + 79, + 86, + 91, + 80, + 97, + 10, + 0, + 81, + 148, + 80, + 97, + 16, + 128, + 96, + 6, + 97, + 10, + 96, + 81, + 1, + 96, + 32, + 2, + 129, + 1, + 97, + 10, + 96, + 81, + 97, + 5, + 135, + 87, + 96, + 32, + 1, + 91, + 97, + 10, + 64, + 81, + 91, + 129, + 131, + 16, + 21, + 97, + 5, + 173, + 87, + 134, + 129, + 136, + 3, + 134, + 8, + 131, + 82, + 134, + 136, + 130, + 9, + 144, + 80, + 96, + 32, + 131, + 1, + 146, + 80, + 97, + 5, + 140, + 86, + 91, + 80, + 133, + 96, + 1, + 135, + 3, + 132, + 8, + 147, + 80, + 131, + 129, + 82, + 97, + 5, + 203, + 134, + 96, + 32, + 131, + 1, + 97, + 16, + 128, + 136, + 97, + 0, + 196, + 86, + 91, + 148, + 80, + 97, + 16, + 128, + 145, + 80, + 133, + 97, + 9, + 224, + 81, + 133, + 9, + 147, + 80, + 97, + 10, + 64, + 81, + 91, + 129, + 131, + 16, + 21, + 97, + 6, + 3, + 87, + 134, + 135, + 130, + 133, + 81, + 9, + 134, + 9, + 131, + 82, + 134, + 136, + 130, + 9, + 144, + 80, + 96, + 32, + 131, + 1, + 146, + 80, + 97, + 5, + 224, + 86, + 91, + 80, + 97, + 16, + 160, + 81, + 150, + 80, + 97, + 16, + 192, + 147, + 80, + 97, + 17, + 64, + 145, + 80, + 91, + 129, + 132, + 16, + 21, + 97, + 6, + 47, + 87, + 133, + 132, + 81, + 136, + 8, + 150, + 80, + 96, + 32, + 132, + 1, + 147, + 80, + 97, + 6, + 21, + 86, + 91, + 96, + 0, + 145, + 80, + 97, + 21, + 164, + 97, + 10, + 96, + 81, + 96, + 32, + 2, + 129, + 1, + 91, + 128, + 130, + 16, + 21, + 97, + 6, + 100, + 87, + 135, + 136, + 131, + 53, + 136, + 81, + 9, + 133, + 8, + 147, + 80, + 96, + 32, + 130, + 1, + 145, + 80, + 96, + 32, + 134, + 1, + 149, + 80, + 97, + 6, + 64, + 86, + 91, + 80, + 80, + 81, + 97, + 16, + 128, + 128, + 81, + 97, + 17, + 64, + 81, + 148, + 144, + 145, + 82, + 97, + 16, + 160, + 145, + 144, + 145, + 82, + 97, + 16, + 192, + 82, + 97, + 16, + 224, + 149, + 144, + 149, + 82, + 97, + 17, + 0, + 129, + 144, + 82, + 97, + 17, + 32, + 148, + 144, + 148, + 82, + 80, + 97, + 15, + 96, + 81, + 96, + 0, + 147, + 127, + 9, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, + 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, + 145, + 144, + 132, + 128, + 97, + 14, + 68, + 53, + 131, + 9, + 134, + 3, + 130, + 8, + 149, + 80, + 80, + 97, + 15, + 196, + 53, + 132, + 128, + 130, + 129, + 3, + 129, + 132, + 128, + 9, + 8, + 97, + 16, + 192, + 81, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 14, + 132, + 53, + 134, + 3, + 97, + 14, + 164, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 14, + 228, + 53, + 134, + 3, + 97, + 15, + 4, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 15, + 68, + 53, + 134, + 3, + 97, + 15, + 100, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 15, + 164, + 53, + 134, + 3, + 97, + 15, + 196, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 14, + 100, + 53, + 97, + 14, + 68, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 4, + 53, + 136, + 9, + 97, + 12, + 196, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 36, + 53, + 136, + 9, + 97, + 11, + 132, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 97, + 15, + 128, + 81, + 132, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 196, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 132, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 14, + 196, + 53, + 97, + 14, + 164, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 68, + 53, + 136, + 9, + 97, + 11, + 164, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 100, + 53, + 136, + 9, + 97, + 11, + 196, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 164, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 196, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 36, + 53, + 97, + 15, + 4, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 132, + 53, + 136, + 9, + 97, + 11, + 228, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 164, + 53, + 136, + 9, + 97, + 12, + 36, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 228, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 36, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 132, + 53, + 97, + 15, + 100, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 196, + 53, + 136, + 9, + 97, + 12, + 68, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 228, + 53, + 136, + 9, + 97, + 12, + 100, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 68, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 100, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 228, + 53, + 97, + 15, + 196, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 14, + 4, + 53, + 136, + 9, + 97, + 12, + 132, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 14, + 36, + 53, + 136, + 9, + 97, + 17, + 32, + 81, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 132, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 17, + 32, + 81, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 16, + 4, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 16, + 4, + 53, + 135, + 3, + 135, + 97, + 16, + 4, + 53, + 97, + 16, + 4, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 4, + 53, + 97, + 11, + 132, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 16, + 132, + 53, + 8, + 138, + 133, + 97, + 16, + 68, + 53, + 8, + 9, + 97, + 16, + 36, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 16, + 4, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 16, + 132, + 53, + 134, + 3, + 97, + 16, + 68, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 16, + 100, + 53, + 135, + 3, + 97, + 16, + 68, + 53, + 8, + 134, + 97, + 16, + 132, + 53, + 136, + 3, + 97, + 16, + 68, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 16, + 164, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 16, + 164, + 53, + 135, + 3, + 135, + 97, + 16, + 164, + 53, + 97, + 16, + 164, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 132, + 53, + 97, + 11, + 164, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 17, + 36, + 53, + 8, + 138, + 133, + 97, + 16, + 228, + 53, + 8, + 9, + 97, + 16, + 196, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 16, + 164, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 17, + 36, + 53, + 134, + 3, + 97, + 16, + 228, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 17, + 4, + 53, + 135, + 3, + 97, + 16, + 228, + 53, + 8, + 134, + 97, + 17, + 36, + 53, + 136, + 3, + 97, + 16, + 228, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 17, + 68, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 17, + 68, + 53, + 135, + 3, + 135, + 97, + 17, + 68, + 53, + 97, + 17, + 68, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 164, + 53, + 97, + 11, + 196, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 17, + 196, + 53, + 8, + 138, + 133, + 97, + 17, + 132, + 53, + 8, + 9, + 97, + 17, + 100, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 17, + 68, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 17, + 196, + 53, + 134, + 3, + 97, + 17, + 132, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 17, + 164, + 53, + 135, + 3, + 97, + 17, + 132, + 53, + 8, + 134, + 97, + 17, + 196, + 53, + 136, + 3, + 97, + 17, + 132, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 17, + 228, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 17, + 228, + 53, + 135, + 3, + 135, + 97, + 17, + 228, + 53, + 97, + 17, + 228, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 196, + 53, + 97, + 11, + 228, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 18, + 100, + 53, + 8, + 138, + 133, + 97, + 18, + 36, + 53, + 8, + 9, + 97, + 18, + 4, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 17, + 228, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 18, + 100, + 53, + 134, + 3, + 97, + 18, + 36, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 18, + 68, + 53, + 135, + 3, + 97, + 18, + 36, + 53, + 8, + 134, + 97, + 18, + 100, + 53, + 136, + 3, + 97, + 18, + 36, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 18, + 132, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 18, + 132, + 53, + 135, + 3, + 135, + 97, + 18, + 132, + 53, + 97, + 18, + 132, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 164, + 53, + 97, + 12, + 36, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 19, + 4, + 53, + 8, + 138, + 133, + 97, + 18, + 196, + 53, + 8, + 9, + 97, + 18, + 164, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 18, + 132, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 19, + 4, + 53, + 134, + 3, + 97, + 18, + 196, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 18, + 228, + 53, + 135, + 3, + 97, + 18, + 196, + 53, + 8, + 134, + 97, + 19, + 4, + 53, + 136, + 3, + 97, + 18, + 196, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 19, + 36, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 19, + 36, + 53, + 135, + 3, + 135, + 97, + 19, + 36, + 53, + 97, + 19, + 36, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 36, + 53, + 97, + 12, + 68, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 19, + 164, + 53, + 8, + 138, + 133, + 97, + 19, + 100, + 53, + 8, + 9, + 97, + 19, + 68, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 19, + 36, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 19, + 164, + 53, + 134, + 3, + 97, + 19, + 100, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 19, + 132, + 53, + 135, + 3, + 97, + 19, + 100, + 53, + 8, + 134, + 97, + 19, + 164, + 53, + 136, + 3, + 97, + 19, + 100, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 19, + 196, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 19, + 196, + 53, + 135, + 3, + 135, + 97, + 19, + 196, + 53, + 97, + 19, + 196, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 68, + 53, + 97, + 12, + 100, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 20, + 68, + 53, + 8, + 138, + 133, + 97, + 20, + 4, + 53, + 8, + 9, + 97, + 19, + 228, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 19, + 196, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 20, + 68, + 53, + 134, + 3, + 97, + 20, + 4, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 20, + 36, + 53, + 135, + 3, + 97, + 20, + 4, + 53, + 8, + 134, + 97, + 20, + 68, + 53, + 136, + 3, + 97, + 20, + 4, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 20, + 100, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 20, + 100, + 53, + 135, + 3, + 135, + 97, + 20, + 100, + 53, + 97, + 20, + 100, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 100, + 53, + 97, + 12, + 132, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 20, + 228, + 53, + 8, + 138, + 133, + 97, + 20, + 164, + 53, + 8, + 9, + 97, + 20, + 132, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 20, + 100, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 20, + 228, + 53, + 134, + 3, + 97, + 20, + 164, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 20, + 196, + 53, + 135, + 3, + 97, + 20, + 164, + 53, + 8, + 134, + 97, + 20, + 228, + 53, + 136, + 3, + 97, + 20, + 164, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 80, + 80, + 129, + 97, + 16, + 160, + 81, + 132, + 9, + 97, + 17, + 64, + 82, + 97, + 11, + 68, + 53, + 96, + 0, + 82, + 97, + 11, + 100, + 53, + 96, + 32, + 82, + 97, + 16, + 128, + 81, + 146, + 80, + 97, + 11, + 4, + 97, + 10, + 132, + 91, + 129, + 129, + 16, + 21, + 97, + 19, + 65, + 87, + 97, + 19, + 34, + 133, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 19, + 52, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 19, + 16, + 86, + 91, + 80, + 80, + 96, + 0, + 81, + 97, + 17, + 96, + 82, + 96, + 32, + 81, + 97, + 17, + 128, + 82, + 97, + 15, + 128, + 81, + 146, + 80, + 97, + 10, + 0, + 81, + 97, + 10, + 32, + 81, + 131, + 130, + 134, + 9, + 145, + 80, + 129, + 97, + 3, + 96, + 82, + 132, + 97, + 3, + 64, + 82, + 131, + 129, + 134, + 9, + 145, + 80, + 129, + 97, + 3, + 32, + 82, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 80, + 128, + 97, + 3, + 0, + 82, + 80, + 97, + 15, + 224, + 81, + 146, + 80, + 97, + 3, + 128, + 97, + 4, + 0, + 97, + 3, + 0, + 91, + 129, + 131, + 16, + 21, + 97, + 19, + 204, + 87, + 132, + 129, + 81, + 134, + 3, + 135, + 8, + 131, + 82, + 96, + 32, + 146, + 131, + 1, + 146, + 1, + 97, + 19, + 175, + 86, + 91, + 80, + 80, + 97, + 3, + 192, + 81, + 97, + 4, + 0, + 82, + 80, + 97, + 3, + 128, + 81, + 97, + 3, + 160, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 9, + 146, + 80, + 129, + 97, + 3, + 224, + 81, + 132, + 9, + 97, + 4, + 32, + 129, + 144, + 82, + 96, + 0, + 82, + 97, + 3, + 160, + 81, + 97, + 4, + 64, + 129, + 144, + 82, + 97, + 3, + 128, + 81, + 147, + 80, + 130, + 144, + 132, + 9, + 97, + 4, + 96, + 82, + 97, + 3, + 128, + 81, + 97, + 3, + 224, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 9, + 97, + 4, + 128, + 82, + 97, + 3, + 192, + 81, + 96, + 1, + 147, + 80, + 130, + 144, + 132, + 9, + 96, + 32, + 82, + 97, + 3, + 0, + 81, + 97, + 3, + 64, + 81, + 97, + 3, + 96, + 81, + 145, + 148, + 80, + 144, + 96, + 0, + 132, + 131, + 129, + 3, + 135, + 8, + 144, + 80, + 132, + 133, + 131, + 135, + 3, + 136, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 128, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 64, + 82, + 132, + 134, + 134, + 3, + 132, + 8, + 144, + 80, + 132, + 133, + 131, + 135, + 3, + 133, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 192, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 96, + 82, + 132, + 134, + 134, + 3, + 131, + 8, + 144, + 80, + 132, + 133, + 132, + 135, + 3, + 132, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 224, + 81, + 130, + 9, + 96, + 128, + 82, + 80, + 80, + 97, + 3, + 64, + 81, + 97, + 3, + 96, + 81, + 144, + 148, + 80, + 144, + 80, + 96, + 0, + 131, + 130, + 129, + 3, + 134, + 8, + 144, + 80, + 131, + 97, + 3, + 192, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 160, + 82, + 131, + 133, + 133, + 3, + 131, + 8, + 144, + 80, + 131, + 97, + 3, + 224, + 81, + 130, + 9, + 96, + 192, + 82, + 80, + 80, + 97, + 3, + 32, + 81, + 97, + 3, + 64, + 81, + 144, + 147, + 80, + 96, + 0, + 131, + 130, + 129, + 3, + 134, + 8, + 144, + 80, + 131, + 97, + 3, + 160, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 224, + 82, + 131, + 133, + 133, + 3, + 131, + 8, + 144, + 80, + 131, + 97, + 3, + 192, + 81, + 130, + 9, + 97, + 1, + 0, + 82, + 80, + 97, + 21, + 34, + 144, + 80, + 130, + 97, + 1, + 32, + 96, + 0, + 132, + 97, + 0, + 196, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 146, + 80, + 130, + 97, + 4, + 32, + 82, + 97, + 4, + 64, + 97, + 4, + 160, + 91, + 128, + 130, + 16, + 21, + 97, + 21, + 79, + 87, + 131, + 133, + 131, + 81, + 9, + 130, + 82, + 96, + 32, + 130, + 1, + 145, + 80, + 97, + 21, + 53, + 86, + 91, + 80, + 80, + 96, + 32, + 81, + 146, + 80, + 97, + 15, + 160, + 81, + 96, + 0, + 131, + 132, + 97, + 12, + 228, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 64, + 81, + 135, + 9, + 130, + 8, + 144, + 80, + 97, + 14, + 36, + 97, + 12, + 228, + 91, + 129, + 129, + 16, + 21, + 97, + 21, + 161, + 87, + 133, + 134, + 131, + 53, + 137, + 9, + 135, + 134, + 134, + 9, + 8, + 146, + 80, + 96, + 32, + 130, + 3, + 145, + 80, + 97, + 21, + 129, + 86, + 91, + 80, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 12, + 196, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 20, + 228, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 20, + 68, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 19, + 164, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 19, + 4, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 18, + 100, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 196, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 36, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 16, + 132, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 97, + 12, + 164, + 97, + 11, + 100, + 91, + 129, + 129, + 16, + 21, + 97, + 22, + 108, + 87, + 133, + 134, + 131, + 53, + 137, + 9, + 135, + 134, + 134, + 9, + 8, + 146, + 80, + 96, + 32, + 130, + 3, + 145, + 80, + 97, + 22, + 76, + 86, + 91, + 80, + 80, + 128, + 97, + 4, + 160, + 82, + 80, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 15, + 164, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 100, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 132, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 15, + 68, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 4, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 36, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 14, + 228, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 164, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 196, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 14, + 132, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 68, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 100, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 64, + 81, + 130, + 9, + 144, + 80, + 128, + 97, + 4, + 192, + 82, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 20, + 100, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 132, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 196, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 228, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 36, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 68, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 132, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 164, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 228, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 4, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 68, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 17, + 100, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 164, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 196, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 4, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 36, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 15, + 196, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 228, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 96, + 81, + 130, + 9, + 144, + 80, + 128, + 97, + 4, + 224, + 82, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 20, + 196, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 164, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 20, + 36, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 4, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 132, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 100, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 228, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 196, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 68, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 36, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 164, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 17, + 132, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 4, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 228, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 100, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 68, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 128, + 81, + 130, + 9, + 97, + 5, + 0, + 82, + 80, + 96, + 32, + 81, + 97, + 5, + 32, + 82, + 96, + 64, + 81, + 96, + 96, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 146, + 80, + 129, + 96, + 128, + 81, + 132, + 8, + 97, + 5, + 64, + 82, + 96, + 160, + 81, + 96, + 192, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 97, + 5, + 96, + 82, + 96, + 224, + 81, + 97, + 1, + 0, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 97, + 5, + 128, + 82, + 96, + 0, + 146, + 80, + 96, + 128, + 97, + 5, + 32, + 91, + 129, + 133, + 16, + 21, + 97, + 26, + 20, + 87, + 128, + 81, + 133, + 82, + 96, + 32, + 148, + 133, + 1, + 148, + 1, + 97, + 25, + 252, + 86, + 91, + 80, + 80, + 97, + 26, + 36, + 130, + 96, + 128, + 96, + 0, + 132, + 97, + 0, + 196, + 86, + 91, + 144, + 80, + 129, + 97, + 5, + 0, + 81, + 96, + 96, + 81, + 9, + 146, + 80, + 96, + 64, + 96, + 128, + 97, + 4, + 224, + 91, + 129, + 131, + 16, + 21, + 97, + 26, + 98, + 87, + 132, + 97, + 15, + 192, + 81, + 135, + 9, + 149, + 80, + 132, + 133, + 130, + 81, + 133, + 81, + 9, + 135, + 8, + 149, + 80, + 96, + 31, + 25, + 146, + 131, + 1, + 146, + 1, + 97, + 26, + 57, + 86, + 91, + 80, + 80, + 80, + 130, + 97, + 17, + 160, + 82, + 97, + 15, + 192, + 81, + 146, + 80, + 97, + 10, + 132, + 53, + 96, + 0, + 82, + 97, + 10, + 164, + 53, + 96, + 32, + 82, + 97, + 26, + 139, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 26, + 158, + 97, + 17, + 128, + 81, + 97, + 17, + 96, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 14, + 192, + 97, + 12, + 0, + 91, + 129, + 129, + 16, + 21, + 97, + 26, + 219, + 87, + 97, + 26, + 188, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 26, + 206, + 96, + 32, + 131, + 1, + 81, + 131, + 81, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 26, + 167, + 86, + 91, + 80, + 80, + 97, + 26, + 234, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 26, + 253, + 97, + 7, + 36, + 53, + 97, + 7, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 12, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 31, + 97, + 6, + 164, + 53, + 97, + 6, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 46, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 65, + 97, + 6, + 36, + 53, + 97, + 6, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 80, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 99, + 97, + 5, + 164, + 53, + 97, + 5, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 114, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 133, + 97, + 5, + 36, + 53, + 97, + 5, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 148, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 167, + 97, + 4, + 164, + 53, + 97, + 4, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 182, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 201, + 97, + 4, + 36, + 53, + 97, + 4, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 216, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 235, + 97, + 3, + 164, + 53, + 97, + 3, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 250, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 28, + 13, + 97, + 1, + 36, + 53, + 97, + 1, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 3, + 4, + 97, + 2, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 74, + 87, + 97, + 28, + 43, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 28, + 61, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 22, + 86, + 91, + 80, + 80, + 97, + 28, + 89, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 28, + 106, + 96, + 228, + 53, + 96, + 196, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 2, + 4, + 97, + 1, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 167, + 87, + 97, + 28, + 136, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 28, + 154, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 115, + 86, + 91, + 80, + 80, + 97, + 8, + 4, + 53, + 96, + 128, + 82, + 97, + 8, + 36, + 53, + 96, + 160, + 82, + 97, + 7, + 196, + 97, + 7, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 242, + 87, + 97, + 28, + 211, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 220, + 86, + 91, + 146, + 80, + 97, + 28, + 229, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 189, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 190, + 86, + 91, + 80, + 80, + 97, + 29, + 4, + 130, + 97, + 4, + 64, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 21, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 129, + 97, + 15, + 192, + 81, + 132, + 9, + 146, + 80, + 97, + 10, + 68, + 53, + 96, + 128, + 82, + 97, + 10, + 100, + 53, + 96, + 160, + 82, + 97, + 10, + 4, + 97, + 8, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 29, + 105, + 87, + 97, + 29, + 74, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 220, + 86, + 91, + 146, + 80, + 97, + 29, + 92, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 189, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 29, + 53, + 86, + 91, + 80, + 80, + 97, + 29, + 123, + 130, + 97, + 4, + 96, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 140, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 129, + 97, + 15, + 192, + 81, + 132, + 9, + 146, + 80, + 97, + 6, + 196, + 53, + 96, + 128, + 82, + 97, + 6, + 228, + 53, + 96, + 160, + 82, + 97, + 29, + 178, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 197, + 97, + 6, + 100, + 53, + 97, + 6, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 29, + 212, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 231, + 97, + 5, + 228, + 53, + 97, + 5, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 29, + 246, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 9, + 97, + 5, + 100, + 53, + 97, + 5, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 24, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 43, + 97, + 4, + 228, + 53, + 97, + 4, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 58, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 77, + 97, + 4, + 100, + 53, + 97, + 4, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 92, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 111, + 97, + 3, + 228, + 53, + 97, + 3, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 126, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 145, + 97, + 3, + 100, + 53, + 97, + 3, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 163, + 130, + 97, + 4, + 128, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 180, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 11, + 0, + 81, + 96, + 128, + 82, + 97, + 11, + 32, + 81, + 96, + 160, + 82, + 97, + 30, + 211, + 97, + 17, + 160, + 81, + 131, + 3, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 228, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 21, + 4, + 53, + 96, + 128, + 82, + 97, + 21, + 36, + 53, + 96, + 160, + 82, + 97, + 31, + 3, + 97, + 4, + 0, + 81, + 131, + 3, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 31, + 20, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 21, + 68, + 53, + 96, + 128, + 82, + 97, + 21, + 100, + 53, + 96, + 160, + 82, + 97, + 31, + 49, + 97, + 15, + 224, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 31, + 66, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 17, + 192, + 82, + 96, + 32, + 81, + 97, + 17, + 224, + 82, + 97, + 21, + 68, + 53, + 97, + 18, + 0, + 82, + 97, + 21, + 100, + 53, + 97, + 18, + 32, + 82, + 97, + 10, + 128, + 81, + 21, + 97, + 32, + 22, + 87, + 97, + 16, + 0, + 81, + 96, + 0, + 82, + 97, + 16, + 32, + 81, + 96, + 32, + 82, + 97, + 16, + 64, + 81, + 96, + 64, + 82, + 97, + 16, + 96, + 81, + 96, + 96, + 82, + 97, + 17, + 192, + 81, + 96, + 128, + 82, + 97, + 17, + 224, + 81, + 96, + 160, + 82, + 97, + 18, + 0, + 81, + 96, + 192, + 82, + 97, + 18, + 32, + 81, + 96, + 224, + 82, + 129, + 97, + 1, + 0, + 96, + 0, + 32, + 6, + 146, + 80, + 97, + 31, + 183, + 131, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 31, + 202, + 97, + 17, + 224, + 81, + 97, + 17, + 192, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 17, + 192, + 82, + 96, + 32, + 81, + 97, + 17, + 224, + 82, + 97, + 16, + 64, + 81, + 96, + 0, + 82, + 97, + 16, + 96, + 81, + 96, + 32, + 82, + 97, + 31, + 242, + 131, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 32, + 5, + 97, + 18, + 32, + 81, + 97, + 18, + 0, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 18, + 0, + 82, + 96, + 32, + 81, + 97, + 18, + 32, + 82, + 91, + 97, + 32, + 47, + 97, + 18, + 32, + 81, + 97, + 18, + 0, + 81, + 97, + 17, + 224, + 81, + 97, + 17, + 192, + 81, + 133, + 97, + 1, + 247, + 86, + 91, + 144, + 80, + 128, + 97, + 32, + 59, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 80, + 80, + 96, + 1, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 243, + 91, + 96, + 0, + 128, + 131, + 96, + 31, + 132, + 1, + 18, + 97, + 32, + 91, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 32, + 115, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 145, + 80, + 131, + 96, + 32, + 130, + 96, + 5, + 27, + 133, + 1, + 1, + 17, + 21, + 97, + 32, + 142, + 87, + 96, + 0, + 128, + 253, + 91, + 146, + 80, + 146, + 144, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 96, + 134, + 136, + 3, + 18, + 21, + 97, + 32, + 173, + 87, + 96, + 0, + 128, + 253, + 91, + 133, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 32, + 196, + 87, + 96, + 0, + 128, + 253, + 91, + 148, + 80, + 96, + 32, + 134, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 32, + 225, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 136, + 1, + 145, + 80, + 136, + 96, + 31, + 131, + 1, + 18, + 97, + 32, + 245, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 129, + 129, + 17, + 21, + 97, + 33, + 4, + 87, + 96, + 0, + 128, + 253, + 91, + 137, + 96, + 32, + 130, + 133, + 1, + 1, + 17, + 21, + 97, + 33, + 22, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 150, + 80, + 128, + 149, + 80, + 80, + 96, + 64, + 136, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 33, + 52, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 33, + 65, + 136, + 130, + 137, + 1, + 97, + 32, + 73, + 86, + 91, + 150, + 153, + 149, + 152, + 80, + 147, + 150, + 80, + 146, + 148, + 147, + 146, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 83, + 54, + 64, + 216, + 23, + 28, + 138, + 115, + 83, + 98, + 89, + 12, + 71, + 19, + 49, + 170, + 112, + 169, + 51, + 83, + 36, + 180, + 171, + 109, + 198, + 238, + 186, + 133, + 66, + 106, + 183, + 156, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static VERIFIER_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 43, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 175, + 131, + 161, + 141, + 20, + 97, + 0, + 48, + 87, + 91, + 96, + 0, + 128, + 253, + 91, + 97, + 0, + 67, + 97, + 0, + 62, + 54, + 96, + 4, + 97, + 32, + 149, + 86, + 91, + 97, + 0, + 87, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 243, + 91, + 96, + 0, + 97, + 2, + 99, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 132, + 53, + 96, + 32, + 134, + 1, + 53, + 136, + 130, + 16, + 134, + 22, + 148, + 80, + 136, + 129, + 16, + 133, + 22, + 148, + 80, + 136, + 96, + 3, + 138, + 139, + 133, + 134, + 9, + 133, + 9, + 8, + 137, + 130, + 131, + 9, + 146, + 137, + 82, + 96, + 32, + 137, + 1, + 145, + 144, + 145, + 82, + 20, + 146, + 144, + 146, + 22, + 150, + 96, + 64, + 148, + 133, + 1, + 150, + 80, + 147, + 144, + 148, + 1, + 147, + 80, + 80, + 80, + 86, + 91, + 96, + 1, + 96, + 32, + 83, + 96, + 33, + 96, + 0, + 144, + 129, + 32, + 146, + 131, + 6, + 130, + 82, + 145, + 144, + 145, + 82, + 96, + 32, + 1, + 144, + 86, + 91, + 96, + 0, + 131, + 131, + 81, + 96, + 32, + 133, + 1, + 91, + 96, + 32, + 135, + 3, + 129, + 16, + 21, + 97, + 0, + 240, + 87, + 135, + 129, + 81, + 131, + 9, + 128, + 132, + 82, + 96, + 32, + 147, + 132, + 1, + 147, + 144, + 146, + 80, + 1, + 97, + 0, + 206, + 86, + 91, + 135, + 129, + 81, + 131, + 9, + 145, + 80, + 96, + 32, + 131, + 82, + 96, + 32, + 128, + 132, + 1, + 82, + 96, + 32, + 96, + 64, + 132, + 1, + 82, + 129, + 96, + 96, + 132, + 1, + 82, + 96, + 2, + 136, + 3, + 96, + 128, + 132, + 1, + 82, + 135, + 96, + 160, + 132, + 1, + 82, + 96, + 32, + 131, + 96, + 192, + 133, + 96, + 5, + 90, + 250, + 133, + 22, + 147, + 80, + 130, + 81, + 145, + 80, + 133, + 96, + 32, + 129, + 1, + 96, + 32, + 133, + 3, + 148, + 80, + 91, + 130, + 129, + 16, + 21, + 97, + 1, + 99, + 87, + 137, + 133, + 81, + 133, + 9, + 138, + 132, + 81, + 134, + 9, + 144, + 132, + 82, + 96, + 31, + 25, + 149, + 134, + 1, + 149, + 144, + 148, + 80, + 144, + 146, + 1, + 145, + 97, + 1, + 59, + 86, + 91, + 137, + 129, + 81, + 133, + 9, + 148, + 80, + 137, + 130, + 81, + 133, + 9, + 148, + 144, + 145, + 82, + 146, + 144, + 146, + 82, + 80, + 144, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 64, + 82, + 130, + 96, + 96, + 82, + 96, + 0, + 96, + 64, + 96, + 0, + 96, + 128, + 96, + 0, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 64, + 82, + 96, + 0, + 96, + 64, + 96, + 0, + 96, + 96, + 96, + 0, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 130, + 96, + 224, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 128, + 96, + 128, + 96, + 6, + 90, + 250, + 144, + 145, + 22, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 129, + 96, + 192, + 82, + 96, + 0, + 96, + 64, + 96, + 128, + 96, + 96, + 96, + 128, + 96, + 7, + 90, + 250, + 144, + 145, + 22, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 96, + 0, + 82, + 130, + 96, + 32, + 82, + 97, + 11, + 64, + 81, + 96, + 64, + 82, + 97, + 11, + 96, + 81, + 96, + 96, + 82, + 97, + 11, + 128, + 81, + 96, + 128, + 82, + 97, + 11, + 160, + 81, + 96, + 160, + 82, + 131, + 96, + 192, + 82, + 132, + 96, + 224, + 82, + 97, + 11, + 192, + 81, + 97, + 1, + 0, + 82, + 97, + 11, + 224, + 81, + 97, + 1, + 32, + 82, + 97, + 12, + 0, + 81, + 97, + 1, + 64, + 82, + 97, + 12, + 32, + 81, + 97, + 1, + 96, + 82, + 96, + 0, + 96, + 32, + 96, + 0, + 97, + 1, + 128, + 96, + 0, + 96, + 8, + 90, + 250, + 96, + 0, + 81, + 146, + 22, + 144, + 145, + 22, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 151, + 129, + 106, + 145, + 104, + 113, + 202, + 141, + 60, + 32, + 140, + 22, + 216, + 124, + 253, + 71, + 127, + 48, + 100, + 78, + 114, + 225, + 49, + 160, + 41, + 184, + 80, + 69, + 182, + 129, + 129, + 88, + 93, + 40, + 51, + 232, + 72, + 121, + 185, + 112, + 145, + 67, + 225, + 245, + 147, + 240, + 0, + 0, + 1, + 96, + 1, + 97, + 5, + 96, + 96, + 0, + 97, + 9, + 160, + 139, + 60, + 96, + 100, + 53, + 97, + 21, + 0, + 20, + 129, + 22, + 144, + 80, + 97, + 10, + 96, + 81, + 97, + 21, + 132, + 53, + 129, + 20, + 130, + 22, + 145, + 80, + 97, + 9, + 160, + 81, + 96, + 0, + 82, + 96, + 32, + 97, + 21, + 164, + 130, + 96, + 32, + 2, + 129, + 1, + 91, + 128, + 130, + 16, + 21, + 97, + 3, + 0, + 87, + 129, + 53, + 128, + 132, + 82, + 134, + 17, + 148, + 144, + 148, + 22, + 147, + 96, + 32, + 146, + 131, + 1, + 146, + 144, + 145, + 1, + 144, + 97, + 2, + 221, + 86, + 91, + 80, + 96, + 132, + 146, + 80, + 97, + 15, + 0, + 144, + 80, + 97, + 3, + 68, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 45, + 87, + 97, + 3, + 34, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 14, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 4, + 0, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 101, + 87, + 97, + 3, + 90, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 70, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 3, + 130, + 133, + 130, + 97, + 0, + 169, + 86, + 91, + 144, + 80, + 97, + 3, + 128, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 169, + 87, + 97, + 3, + 158, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 138, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 96, + 192, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 3, + 224, + 87, + 97, + 3, + 213, + 135, + 132, + 134, + 136, + 97, + 0, + 94, + 86, + 91, + 148, + 80, + 148, + 80, + 148, + 80, + 97, + 3, + 193, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 9, + 128, + 131, + 1, + 91, + 128, + 132, + 16, + 21, + 97, + 4, + 28, + 87, + 131, + 53, + 128, + 132, + 82, + 134, + 17, + 148, + 144, + 148, + 22, + 147, + 96, + 32, + 147, + 132, + 1, + 147, + 144, + 146, + 1, + 145, + 97, + 3, + 249, + 86, + 91, + 80, + 96, + 0, + 145, + 130, + 32, + 133, + 129, + 6, + 130, + 82, + 144, + 145, + 82, + 96, + 32, + 144, + 129, + 1, + 97, + 4, + 57, + 133, + 130, + 97, + 0, + 169, + 86, + 91, + 144, + 80, + 97, + 4, + 71, + 134, + 131, + 133, + 135, + 97, + 0, + 94, + 86, + 91, + 96, + 0, + 144, + 129, + 32, + 136, + 129, + 6, + 144, + 148, + 82, + 146, + 144, + 146, + 82, + 147, + 80, + 145, + 80, + 96, + 32, + 144, + 80, + 97, + 4, + 106, + 133, + 130, + 132, + 134, + 97, + 0, + 94, + 86, + 91, + 146, + 80, + 146, + 80, + 146, + 80, + 80, + 80, + 97, + 10, + 128, + 81, + 21, + 97, + 5, + 55, + 87, + 97, + 10, + 192, + 81, + 97, + 10, + 224, + 81, + 96, + 32, + 97, + 10, + 160, + 81, + 2, + 97, + 21, + 164, + 1, + 96, + 32, + 131, + 2, + 96, + 2, + 129, + 2, + 96, + 3, + 130, + 2, + 131, + 53, + 131, + 133, + 1, + 53, + 131, + 134, + 1, + 53, + 131, + 135, + 1, + 53, + 137, + 96, + 32, + 2, + 136, + 1, + 137, + 91, + 129, + 138, + 16, + 21, + 97, + 4, + 238, + 87, + 96, + 32, + 138, + 1, + 153, + 80, + 137, + 53, + 129, + 27, + 134, + 1, + 149, + 80, + 136, + 138, + 1, + 53, + 129, + 27, + 133, + 1, + 148, + 80, + 135, + 138, + 1, + 53, + 129, + 27, + 132, + 1, + 147, + 80, + 134, + 138, + 1, + 53, + 129, + 27, + 131, + 1, + 146, + 80, + 138, + 129, + 1, + 144, + 80, + 97, + 4, + 176, + 86, + 91, + 80, + 80, + 140, + 96, + 3, + 142, + 143, + 135, + 136, + 9, + 135, + 9, + 8, + 141, + 132, + 133, + 9, + 20, + 139, + 22, + 154, + 80, + 140, + 96, + 3, + 142, + 143, + 133, + 134, + 9, + 133, + 9, + 8, + 141, + 130, + 131, + 9, + 20, + 139, + 22, + 154, + 80, + 131, + 97, + 16, + 0, + 82, + 130, + 97, + 16, + 32, + 82, + 129, + 97, + 16, + 64, + 82, + 128, + 97, + 16, + 96, + 82, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 91, + 128, + 97, + 5, + 65, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 9, + 192, + 81, + 146, + 80, + 97, + 15, + 128, + 81, + 128, + 96, + 0, + 91, + 133, + 129, + 16, + 21, + 97, + 5, + 101, + 87, + 132, + 130, + 131, + 9, + 145, + 80, + 96, + 1, + 1, + 97, + 5, + 79, + 86, + 91, + 80, + 97, + 10, + 0, + 81, + 148, + 80, + 97, + 16, + 128, + 96, + 6, + 97, + 10, + 96, + 81, + 1, + 96, + 32, + 2, + 129, + 1, + 97, + 10, + 96, + 81, + 97, + 5, + 135, + 87, + 96, + 32, + 1, + 91, + 97, + 10, + 64, + 81, + 91, + 129, + 131, + 16, + 21, + 97, + 5, + 173, + 87, + 134, + 129, + 136, + 3, + 134, + 8, + 131, + 82, + 134, + 136, + 130, + 9, + 144, + 80, + 96, + 32, + 131, + 1, + 146, + 80, + 97, + 5, + 140, + 86, + 91, + 80, + 133, + 96, + 1, + 135, + 3, + 132, + 8, + 147, + 80, + 131, + 129, + 82, + 97, + 5, + 203, + 134, + 96, + 32, + 131, + 1, + 97, + 16, + 128, + 136, + 97, + 0, + 196, + 86, + 91, + 148, + 80, + 97, + 16, + 128, + 145, + 80, + 133, + 97, + 9, + 224, + 81, + 133, + 9, + 147, + 80, + 97, + 10, + 64, + 81, + 91, + 129, + 131, + 16, + 21, + 97, + 6, + 3, + 87, + 134, + 135, + 130, + 133, + 81, + 9, + 134, + 9, + 131, + 82, + 134, + 136, + 130, + 9, + 144, + 80, + 96, + 32, + 131, + 1, + 146, + 80, + 97, + 5, + 224, + 86, + 91, + 80, + 97, + 16, + 160, + 81, + 150, + 80, + 97, + 16, + 192, + 147, + 80, + 97, + 17, + 64, + 145, + 80, + 91, + 129, + 132, + 16, + 21, + 97, + 6, + 47, + 87, + 133, + 132, + 81, + 136, + 8, + 150, + 80, + 96, + 32, + 132, + 1, + 147, + 80, + 97, + 6, + 21, + 86, + 91, + 96, + 0, + 145, + 80, + 97, + 21, + 164, + 97, + 10, + 96, + 81, + 96, + 32, + 2, + 129, + 1, + 91, + 128, + 130, + 16, + 21, + 97, + 6, + 100, + 87, + 135, + 136, + 131, + 53, + 136, + 81, + 9, + 133, + 8, + 147, + 80, + 96, + 32, + 130, + 1, + 145, + 80, + 96, + 32, + 134, + 1, + 149, + 80, + 97, + 6, + 64, + 86, + 91, + 80, + 80, + 81, + 97, + 16, + 128, + 128, + 81, + 97, + 17, + 64, + 81, + 148, + 144, + 145, + 82, + 97, + 16, + 160, + 145, + 144, + 145, + 82, + 97, + 16, + 192, + 82, + 97, + 16, + 224, + 149, + 144, + 149, + 82, + 97, + 17, + 0, + 129, + 144, + 82, + 97, + 17, + 32, + 148, + 144, + 148, + 82, + 80, + 97, + 15, + 96, + 81, + 96, + 0, + 147, + 127, + 9, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, + 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, + 145, + 144, + 132, + 128, + 97, + 14, + 68, + 53, + 131, + 9, + 134, + 3, + 130, + 8, + 149, + 80, + 80, + 97, + 15, + 196, + 53, + 132, + 128, + 130, + 129, + 3, + 129, + 132, + 128, + 9, + 8, + 97, + 16, + 192, + 81, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 14, + 132, + 53, + 134, + 3, + 97, + 14, + 164, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 14, + 228, + 53, + 134, + 3, + 97, + 15, + 4, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 15, + 68, + 53, + 134, + 3, + 97, + 15, + 100, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 15, + 164, + 53, + 134, + 3, + 97, + 15, + 196, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 14, + 100, + 53, + 97, + 14, + 68, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 4, + 53, + 136, + 9, + 97, + 12, + 196, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 36, + 53, + 136, + 9, + 97, + 11, + 132, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 97, + 15, + 128, + 81, + 132, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 196, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 132, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 14, + 196, + 53, + 97, + 14, + 164, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 68, + 53, + 136, + 9, + 97, + 11, + 164, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 100, + 53, + 136, + 9, + 97, + 11, + 196, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 164, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 196, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 36, + 53, + 97, + 15, + 4, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 132, + 53, + 136, + 9, + 97, + 11, + 228, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 164, + 53, + 136, + 9, + 97, + 12, + 36, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 11, + 228, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 36, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 132, + 53, + 97, + 15, + 100, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 196, + 53, + 136, + 9, + 97, + 12, + 68, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 13, + 228, + 53, + 136, + 9, + 97, + 12, + 100, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 68, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 100, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 15, + 64, + 81, + 97, + 15, + 32, + 81, + 97, + 15, + 228, + 53, + 97, + 15, + 196, + 53, + 135, + 136, + 133, + 138, + 139, + 97, + 14, + 4, + 53, + 136, + 9, + 97, + 12, + 132, + 53, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 139, + 97, + 14, + 36, + 53, + 136, + 9, + 97, + 17, + 32, + 81, + 8, + 8, + 131, + 9, + 145, + 80, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 12, + 132, + 53, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 134, + 96, + 0, + 81, + 9, + 96, + 0, + 82, + 135, + 136, + 133, + 138, + 96, + 0, + 81, + 97, + 17, + 32, + 81, + 8, + 8, + 130, + 9, + 144, + 80, + 135, + 129, + 137, + 3, + 131, + 8, + 147, + 80, + 80, + 80, + 80, + 132, + 133, + 134, + 97, + 16, + 224, + 81, + 97, + 16, + 192, + 81, + 8, + 131, + 9, + 134, + 3, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 16, + 4, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 16, + 4, + 53, + 135, + 3, + 135, + 97, + 16, + 4, + 53, + 97, + 16, + 4, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 4, + 53, + 97, + 11, + 132, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 16, + 132, + 53, + 8, + 138, + 133, + 97, + 16, + 68, + 53, + 8, + 9, + 97, + 16, + 36, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 16, + 4, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 16, + 132, + 53, + 134, + 3, + 97, + 16, + 68, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 16, + 100, + 53, + 135, + 3, + 97, + 16, + 68, + 53, + 8, + 134, + 97, + 16, + 132, + 53, + 136, + 3, + 97, + 16, + 68, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 16, + 164, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 16, + 164, + 53, + 135, + 3, + 135, + 97, + 16, + 164, + 53, + 97, + 16, + 164, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 132, + 53, + 97, + 11, + 164, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 17, + 36, + 53, + 8, + 138, + 133, + 97, + 16, + 228, + 53, + 8, + 9, + 97, + 16, + 196, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 16, + 164, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 17, + 36, + 53, + 134, + 3, + 97, + 16, + 228, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 17, + 4, + 53, + 135, + 3, + 97, + 16, + 228, + 53, + 8, + 134, + 97, + 17, + 36, + 53, + 136, + 3, + 97, + 16, + 228, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 17, + 68, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 17, + 68, + 53, + 135, + 3, + 135, + 97, + 17, + 68, + 53, + 97, + 17, + 68, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 164, + 53, + 97, + 11, + 196, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 17, + 196, + 53, + 8, + 138, + 133, + 97, + 17, + 132, + 53, + 8, + 9, + 97, + 17, + 100, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 17, + 68, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 17, + 196, + 53, + 134, + 3, + 97, + 17, + 132, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 17, + 164, + 53, + 135, + 3, + 97, + 17, + 132, + 53, + 8, + 134, + 97, + 17, + 196, + 53, + 136, + 3, + 97, + 17, + 132, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 17, + 228, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 17, + 228, + 53, + 135, + 3, + 135, + 97, + 17, + 228, + 53, + 97, + 17, + 228, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 11, + 196, + 53, + 97, + 11, + 228, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 18, + 100, + 53, + 8, + 138, + 133, + 97, + 18, + 36, + 53, + 8, + 9, + 97, + 18, + 4, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 17, + 228, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 18, + 100, + 53, + 134, + 3, + 97, + 18, + 36, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 18, + 68, + 53, + 135, + 3, + 97, + 18, + 36, + 53, + 8, + 134, + 97, + 18, + 100, + 53, + 136, + 3, + 97, + 18, + 36, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 18, + 132, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 18, + 132, + 53, + 135, + 3, + 135, + 97, + 18, + 132, + 53, + 97, + 18, + 132, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 164, + 53, + 97, + 12, + 36, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 19, + 4, + 53, + 8, + 138, + 133, + 97, + 18, + 196, + 53, + 8, + 9, + 97, + 18, + 164, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 18, + 132, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 19, + 4, + 53, + 134, + 3, + 97, + 18, + 196, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 18, + 228, + 53, + 135, + 3, + 97, + 18, + 196, + 53, + 8, + 134, + 97, + 19, + 4, + 53, + 136, + 3, + 97, + 18, + 196, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 19, + 36, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 19, + 36, + 53, + 135, + 3, + 135, + 97, + 19, + 36, + 53, + 97, + 19, + 36, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 36, + 53, + 97, + 12, + 68, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 19, + 164, + 53, + 8, + 138, + 133, + 97, + 19, + 100, + 53, + 8, + 9, + 97, + 19, + 68, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 19, + 36, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 19, + 164, + 53, + 134, + 3, + 97, + 19, + 100, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 19, + 132, + 53, + 135, + 3, + 97, + 19, + 100, + 53, + 8, + 134, + 97, + 19, + 164, + 53, + 136, + 3, + 97, + 19, + 100, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 19, + 196, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 19, + 196, + 53, + 135, + 3, + 135, + 97, + 19, + 196, + 53, + 97, + 19, + 196, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 68, + 53, + 97, + 12, + 100, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 20, + 68, + 53, + 8, + 138, + 133, + 97, + 20, + 4, + 53, + 8, + 9, + 97, + 19, + 228, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 19, + 196, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 20, + 68, + 53, + 134, + 3, + 97, + 20, + 4, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 20, + 36, + 53, + 135, + 3, + 97, + 20, + 4, + 53, + 8, + 134, + 97, + 20, + 68, + 53, + 136, + 3, + 97, + 20, + 4, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 17, + 0, + 81, + 132, + 133, + 97, + 20, + 100, + 53, + 135, + 3, + 131, + 9, + 130, + 8, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 97, + 16, + 192, + 81, + 132, + 133, + 97, + 20, + 100, + 53, + 135, + 3, + 135, + 97, + 20, + 100, + 53, + 97, + 20, + 100, + 53, + 9, + 8, + 130, + 9, + 144, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 96, + 0, + 144, + 80, + 97, + 12, + 100, + 53, + 97, + 12, + 132, + 53, + 98, + 1, + 0, + 0, + 135, + 129, + 131, + 9, + 136, + 3, + 145, + 80, + 135, + 144, + 80, + 129, + 131, + 8, + 97, + 15, + 32, + 81, + 97, + 15, + 64, + 81, + 145, + 148, + 80, + 97, + 12, + 196, + 53, + 147, + 80, + 145, + 80, + 135, + 128, + 128, + 131, + 97, + 20, + 228, + 53, + 8, + 138, + 133, + 97, + 20, + 164, + 53, + 8, + 9, + 97, + 20, + 132, + 53, + 9, + 136, + 137, + 138, + 132, + 135, + 8, + 139, + 134, + 137, + 8, + 9, + 97, + 20, + 100, + 53, + 9, + 148, + 80, + 136, + 137, + 134, + 139, + 3, + 131, + 8, + 138, + 139, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 140, + 3, + 96, + 1, + 8, + 9, + 148, + 80, + 80, + 80, + 80, + 80, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 97, + 20, + 228, + 53, + 134, + 3, + 97, + 20, + 164, + 53, + 8, + 97, + 17, + 0, + 81, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 131, + 132, + 133, + 97, + 20, + 196, + 53, + 135, + 3, + 97, + 20, + 164, + 53, + 8, + 134, + 97, + 20, + 228, + 53, + 136, + 3, + 97, + 20, + 164, + 53, + 8, + 9, + 133, + 134, + 97, + 16, + 192, + 81, + 97, + 16, + 224, + 81, + 8, + 135, + 3, + 96, + 1, + 8, + 9, + 132, + 129, + 134, + 132, + 137, + 9, + 8, + 149, + 80, + 80, + 80, + 80, + 129, + 97, + 16, + 160, + 81, + 132, + 9, + 97, + 17, + 64, + 82, + 97, + 11, + 68, + 53, + 96, + 0, + 82, + 97, + 11, + 100, + 53, + 96, + 32, + 82, + 97, + 16, + 128, + 81, + 146, + 80, + 97, + 11, + 4, + 97, + 10, + 132, + 91, + 129, + 129, + 16, + 21, + 97, + 19, + 65, + 87, + 97, + 19, + 34, + 133, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 19, + 52, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 19, + 16, + 86, + 91, + 80, + 80, + 96, + 0, + 81, + 97, + 17, + 96, + 82, + 96, + 32, + 81, + 97, + 17, + 128, + 82, + 97, + 15, + 128, + 81, + 146, + 80, + 97, + 10, + 0, + 81, + 97, + 10, + 32, + 81, + 131, + 130, + 134, + 9, + 145, + 80, + 129, + 97, + 3, + 96, + 82, + 132, + 97, + 3, + 64, + 82, + 131, + 129, + 134, + 9, + 145, + 80, + 129, + 97, + 3, + 32, + 82, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 131, + 129, + 131, + 9, + 145, + 80, + 80, + 128, + 97, + 3, + 0, + 82, + 80, + 97, + 15, + 224, + 81, + 146, + 80, + 97, + 3, + 128, + 97, + 4, + 0, + 97, + 3, + 0, + 91, + 129, + 131, + 16, + 21, + 97, + 19, + 204, + 87, + 132, + 129, + 81, + 134, + 3, + 135, + 8, + 131, + 82, + 96, + 32, + 146, + 131, + 1, + 146, + 1, + 97, + 19, + 175, + 86, + 91, + 80, + 80, + 97, + 3, + 192, + 81, + 97, + 4, + 0, + 82, + 80, + 97, + 3, + 128, + 81, + 97, + 3, + 160, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 9, + 146, + 80, + 129, + 97, + 3, + 224, + 81, + 132, + 9, + 97, + 4, + 32, + 129, + 144, + 82, + 96, + 0, + 82, + 97, + 3, + 160, + 81, + 97, + 4, + 64, + 129, + 144, + 82, + 97, + 3, + 128, + 81, + 147, + 80, + 130, + 144, + 132, + 9, + 97, + 4, + 96, + 82, + 97, + 3, + 128, + 81, + 97, + 3, + 224, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 9, + 97, + 4, + 128, + 82, + 97, + 3, + 192, + 81, + 96, + 1, + 147, + 80, + 130, + 144, + 132, + 9, + 96, + 32, + 82, + 97, + 3, + 0, + 81, + 97, + 3, + 64, + 81, + 97, + 3, + 96, + 81, + 145, + 148, + 80, + 144, + 96, + 0, + 132, + 131, + 129, + 3, + 135, + 8, + 144, + 80, + 132, + 133, + 131, + 135, + 3, + 136, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 128, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 64, + 82, + 132, + 134, + 134, + 3, + 132, + 8, + 144, + 80, + 132, + 133, + 131, + 135, + 3, + 133, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 192, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 96, + 82, + 132, + 134, + 134, + 3, + 131, + 8, + 144, + 80, + 132, + 133, + 132, + 135, + 3, + 132, + 8, + 130, + 9, + 144, + 80, + 132, + 97, + 3, + 224, + 81, + 130, + 9, + 96, + 128, + 82, + 80, + 80, + 97, + 3, + 64, + 81, + 97, + 3, + 96, + 81, + 144, + 148, + 80, + 144, + 80, + 96, + 0, + 131, + 130, + 129, + 3, + 134, + 8, + 144, + 80, + 131, + 97, + 3, + 192, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 160, + 82, + 131, + 133, + 133, + 3, + 131, + 8, + 144, + 80, + 131, + 97, + 3, + 224, + 81, + 130, + 9, + 96, + 192, + 82, + 80, + 80, + 97, + 3, + 32, + 81, + 97, + 3, + 64, + 81, + 144, + 147, + 80, + 96, + 0, + 131, + 130, + 129, + 3, + 134, + 8, + 144, + 80, + 131, + 97, + 3, + 160, + 81, + 130, + 9, + 144, + 80, + 128, + 96, + 224, + 82, + 131, + 133, + 133, + 3, + 131, + 8, + 144, + 80, + 131, + 97, + 3, + 192, + 81, + 130, + 9, + 97, + 1, + 0, + 82, + 80, + 97, + 21, + 34, + 144, + 80, + 130, + 97, + 1, + 32, + 96, + 0, + 132, + 97, + 0, + 196, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 146, + 80, + 130, + 97, + 4, + 32, + 82, + 97, + 4, + 64, + 97, + 4, + 160, + 91, + 128, + 130, + 16, + 21, + 97, + 21, + 79, + 87, + 131, + 133, + 131, + 81, + 9, + 130, + 82, + 96, + 32, + 130, + 1, + 145, + 80, + 97, + 21, + 53, + 86, + 91, + 80, + 80, + 96, + 32, + 81, + 146, + 80, + 97, + 15, + 160, + 81, + 96, + 0, + 131, + 132, + 97, + 12, + 228, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 64, + 81, + 135, + 9, + 130, + 8, + 144, + 80, + 97, + 14, + 36, + 97, + 12, + 228, + 91, + 129, + 129, + 16, + 21, + 97, + 21, + 161, + 87, + 133, + 134, + 131, + 53, + 137, + 9, + 135, + 134, + 134, + 9, + 8, + 146, + 80, + 96, + 32, + 130, + 3, + 145, + 80, + 97, + 21, + 129, + 86, + 91, + 80, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 12, + 196, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 20, + 228, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 20, + 68, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 19, + 164, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 19, + 4, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 18, + 100, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 196, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 17, + 36, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 131, + 130, + 130, + 9, + 144, + 80, + 131, + 132, + 97, + 16, + 132, + 53, + 135, + 9, + 130, + 8, + 144, + 80, + 97, + 12, + 164, + 97, + 11, + 100, + 91, + 129, + 129, + 16, + 21, + 97, + 22, + 108, + 87, + 133, + 134, + 131, + 53, + 137, + 9, + 135, + 134, + 134, + 9, + 8, + 146, + 80, + 96, + 32, + 130, + 3, + 145, + 80, + 97, + 22, + 76, + 86, + 91, + 80, + 80, + 128, + 97, + 4, + 160, + 82, + 80, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 15, + 164, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 100, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 132, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 15, + 68, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 4, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 36, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 14, + 228, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 164, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 196, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 14, + 132, + 53, + 96, + 64, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 68, + 53, + 96, + 96, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 14, + 100, + 53, + 96, + 128, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 64, + 81, + 130, + 9, + 144, + 80, + 128, + 97, + 4, + 192, + 82, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 20, + 100, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 132, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 196, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 228, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 36, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 68, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 132, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 164, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 228, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 4, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 68, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 17, + 100, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 164, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 196, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 4, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 36, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 15, + 196, + 53, + 96, + 160, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 15, + 228, + 53, + 96, + 192, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 96, + 81, + 130, + 9, + 144, + 80, + 128, + 97, + 4, + 224, + 82, + 80, + 97, + 15, + 160, + 81, + 146, + 80, + 96, + 0, + 130, + 131, + 97, + 20, + 196, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 164, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 20, + 36, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 20, + 4, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 19, + 132, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 19, + 100, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 228, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 196, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 18, + 68, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 18, + 36, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 164, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 17, + 132, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 17, + 4, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 228, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 132, + 130, + 9, + 144, + 80, + 130, + 131, + 97, + 16, + 100, + 53, + 96, + 224, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 131, + 97, + 16, + 68, + 53, + 97, + 1, + 0, + 81, + 9, + 130, + 8, + 144, + 80, + 130, + 97, + 4, + 128, + 81, + 130, + 9, + 97, + 5, + 0, + 82, + 80, + 96, + 32, + 81, + 97, + 5, + 32, + 82, + 96, + 64, + 81, + 96, + 96, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 146, + 80, + 129, + 96, + 128, + 81, + 132, + 8, + 97, + 5, + 64, + 82, + 96, + 160, + 81, + 96, + 192, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 97, + 5, + 96, + 82, + 96, + 224, + 81, + 97, + 1, + 0, + 81, + 144, + 147, + 80, + 130, + 144, + 132, + 8, + 97, + 5, + 128, + 82, + 96, + 0, + 146, + 80, + 96, + 128, + 97, + 5, + 32, + 91, + 129, + 133, + 16, + 21, + 97, + 26, + 20, + 87, + 128, + 81, + 133, + 82, + 96, + 32, + 148, + 133, + 1, + 148, + 1, + 97, + 25, + 252, + 86, + 91, + 80, + 80, + 97, + 26, + 36, + 130, + 96, + 128, + 96, + 0, + 132, + 97, + 0, + 196, + 86, + 91, + 144, + 80, + 129, + 97, + 5, + 0, + 81, + 96, + 96, + 81, + 9, + 146, + 80, + 96, + 64, + 96, + 128, + 97, + 4, + 224, + 91, + 129, + 131, + 16, + 21, + 97, + 26, + 98, + 87, + 132, + 97, + 15, + 192, + 81, + 135, + 9, + 149, + 80, + 132, + 133, + 130, + 81, + 133, + 81, + 9, + 135, + 8, + 149, + 80, + 96, + 31, + 25, + 146, + 131, + 1, + 146, + 1, + 97, + 26, + 57, + 86, + 91, + 80, + 80, + 80, + 130, + 97, + 17, + 160, + 82, + 97, + 15, + 192, + 81, + 146, + 80, + 97, + 10, + 132, + 53, + 96, + 0, + 82, + 97, + 10, + 164, + 53, + 96, + 32, + 82, + 97, + 26, + 139, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 26, + 158, + 97, + 17, + 128, + 81, + 97, + 17, + 96, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 14, + 192, + 97, + 12, + 0, + 91, + 129, + 129, + 16, + 21, + 97, + 26, + 219, + 87, + 97, + 26, + 188, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 26, + 206, + 96, + 32, + 131, + 1, + 81, + 131, + 81, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 26, + 167, + 86, + 91, + 80, + 80, + 97, + 26, + 234, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 26, + 253, + 97, + 7, + 36, + 53, + 97, + 7, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 12, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 31, + 97, + 6, + 164, + 53, + 97, + 6, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 46, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 65, + 97, + 6, + 36, + 53, + 97, + 6, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 80, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 99, + 97, + 5, + 164, + 53, + 97, + 5, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 114, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 133, + 97, + 5, + 36, + 53, + 97, + 5, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 148, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 167, + 97, + 4, + 164, + 53, + 97, + 4, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 182, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 201, + 97, + 4, + 36, + 53, + 97, + 4, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 216, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 27, + 235, + 97, + 3, + 164, + 53, + 97, + 3, + 132, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 27, + 250, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 28, + 13, + 97, + 1, + 36, + 53, + 97, + 1, + 4, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 3, + 4, + 97, + 2, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 74, + 87, + 97, + 28, + 43, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 28, + 61, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 22, + 86, + 91, + 80, + 80, + 97, + 28, + 89, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 28, + 106, + 96, + 228, + 53, + 96, + 196, + 53, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 2, + 4, + 97, + 1, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 167, + 87, + 97, + 28, + 136, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 162, + 86, + 91, + 146, + 80, + 97, + 28, + 154, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 130, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 115, + 86, + 91, + 80, + 80, + 97, + 8, + 4, + 53, + 96, + 128, + 82, + 97, + 8, + 36, + 53, + 96, + 160, + 82, + 97, + 7, + 196, + 97, + 7, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 28, + 242, + 87, + 97, + 28, + 211, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 220, + 86, + 91, + 146, + 80, + 97, + 28, + 229, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 189, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 28, + 190, + 86, + 91, + 80, + 80, + 97, + 29, + 4, + 130, + 97, + 4, + 64, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 21, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 129, + 97, + 15, + 192, + 81, + 132, + 9, + 146, + 80, + 97, + 10, + 68, + 53, + 96, + 128, + 82, + 97, + 10, + 100, + 53, + 96, + 160, + 82, + 97, + 10, + 4, + 97, + 8, + 4, + 91, + 129, + 129, + 16, + 21, + 97, + 29, + 105, + 87, + 97, + 29, + 74, + 97, + 15, + 160, + 81, + 132, + 97, + 1, + 220, + 86, + 91, + 146, + 80, + 97, + 29, + 92, + 96, + 32, + 131, + 1, + 53, + 131, + 53, + 133, + 97, + 1, + 189, + 86, + 91, + 146, + 80, + 96, + 64, + 130, + 3, + 145, + 80, + 97, + 29, + 53, + 86, + 91, + 80, + 80, + 97, + 29, + 123, + 130, + 97, + 4, + 96, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 140, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 129, + 97, + 15, + 192, + 81, + 132, + 9, + 146, + 80, + 97, + 6, + 196, + 53, + 96, + 128, + 82, + 97, + 6, + 228, + 53, + 96, + 160, + 82, + 97, + 29, + 178, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 197, + 97, + 6, + 100, + 53, + 97, + 6, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 29, + 212, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 29, + 231, + 97, + 5, + 228, + 53, + 97, + 5, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 29, + 246, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 9, + 97, + 5, + 100, + 53, + 97, + 5, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 24, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 43, + 97, + 4, + 228, + 53, + 97, + 4, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 58, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 77, + 97, + 4, + 100, + 53, + 97, + 4, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 92, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 111, + 97, + 3, + 228, + 53, + 97, + 3, + 196, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 126, + 97, + 15, + 160, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 145, + 97, + 3, + 100, + 53, + 97, + 3, + 68, + 53, + 131, + 97, + 1, + 189, + 86, + 91, + 144, + 80, + 97, + 30, + 163, + 130, + 97, + 4, + 128, + 81, + 133, + 9, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 180, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 11, + 0, + 81, + 96, + 128, + 82, + 97, + 11, + 32, + 81, + 96, + 160, + 82, + 97, + 30, + 211, + 97, + 17, + 160, + 81, + 131, + 3, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 30, + 228, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 21, + 4, + 53, + 96, + 128, + 82, + 97, + 21, + 36, + 53, + 96, + 160, + 82, + 97, + 31, + 3, + 97, + 4, + 0, + 81, + 131, + 3, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 31, + 20, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 97, + 21, + 68, + 53, + 96, + 128, + 82, + 97, + 21, + 100, + 53, + 96, + 160, + 82, + 97, + 31, + 49, + 97, + 15, + 224, + 81, + 130, + 97, + 1, + 220, + 86, + 91, + 144, + 80, + 97, + 31, + 66, + 96, + 160, + 81, + 96, + 128, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 17, + 192, + 82, + 96, + 32, + 81, + 97, + 17, + 224, + 82, + 97, + 21, + 68, + 53, + 97, + 18, + 0, + 82, + 97, + 21, + 100, + 53, + 97, + 18, + 32, + 82, + 97, + 10, + 128, + 81, + 21, + 97, + 32, + 22, + 87, + 97, + 16, + 0, + 81, + 96, + 0, + 82, + 97, + 16, + 32, + 81, + 96, + 32, + 82, + 97, + 16, + 64, + 81, + 96, + 64, + 82, + 97, + 16, + 96, + 81, + 96, + 96, + 82, + 97, + 17, + 192, + 81, + 96, + 128, + 82, + 97, + 17, + 224, + 81, + 96, + 160, + 82, + 97, + 18, + 0, + 81, + 96, + 192, + 82, + 97, + 18, + 32, + 81, + 96, + 224, + 82, + 129, + 97, + 1, + 0, + 96, + 0, + 32, + 6, + 146, + 80, + 97, + 31, + 183, + 131, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 31, + 202, + 97, + 17, + 224, + 81, + 97, + 17, + 192, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 17, + 192, + 82, + 96, + 32, + 81, + 97, + 17, + 224, + 82, + 97, + 16, + 64, + 81, + 96, + 0, + 82, + 97, + 16, + 96, + 81, + 96, + 32, + 82, + 97, + 31, + 242, + 131, + 130, + 97, + 1, + 162, + 86, + 91, + 144, + 80, + 97, + 32, + 5, + 97, + 18, + 32, + 81, + 97, + 18, + 0, + 81, + 131, + 97, + 1, + 130, + 86, + 91, + 144, + 80, + 96, + 0, + 81, + 97, + 18, + 0, + 82, + 96, + 32, + 81, + 97, + 18, + 32, + 82, + 91, + 97, + 32, + 47, + 97, + 18, + 32, + 81, + 97, + 18, + 0, + 81, + 97, + 17, + 224, + 81, + 97, + 17, + 192, + 81, + 133, + 97, + 1, + 247, + 86, + 91, + 144, + 80, + 128, + 97, + 32, + 59, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 80, + 80, + 96, + 1, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 243, + 91, + 96, + 0, + 128, + 131, + 96, + 31, + 132, + 1, + 18, + 97, + 32, + 91, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 32, + 115, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 145, + 80, + 131, + 96, + 32, + 130, + 96, + 5, + 27, + 133, + 1, + 1, + 17, + 21, + 97, + 32, + 142, + 87, + 96, + 0, + 128, + 253, + 91, + 146, + 80, + 146, + 144, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 96, + 134, + 136, + 3, + 18, + 21, + 97, + 32, + 173, + 87, + 96, + 0, + 128, + 253, + 91, + 133, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 32, + 196, + 87, + 96, + 0, + 128, + 253, + 91, + 148, + 80, + 96, + 32, + 134, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 32, + 225, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 136, + 1, + 145, + 80, + 136, + 96, + 31, + 131, + 1, + 18, + 97, + 32, + 245, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 129, + 129, + 17, + 21, + 97, + 33, + 4, + 87, + 96, + 0, + 128, + 253, + 91, + 137, + 96, + 32, + 130, + 133, + 1, + 1, + 17, + 21, + 97, + 33, + 22, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 131, + 1, + 150, + 80, + 128, + 149, + 80, + 80, + 96, + 64, + 136, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 33, + 52, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 33, + 65, + 136, + 130, + 137, + 1, + 97, + 32, + 73, + 86, + 91, + 150, + 153, + 149, + 152, + 80, + 147, + 150, + 80, + 146, + 148, + 147, + 146, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 83, + 54, + 64, + 216, + 23, + 28, + 138, + 115, + 83, + 98, + 89, + 12, + 71, + 19, + 49, + 170, + 112, + 169, + 51, + 83, + 36, + 180, + 171, + 109, + 198, + 238, + 186, + 133, + 66, + 106, + 183, + 156, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The deployed bytecode of the contract. + pub static VERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Verifier(::ethers::contract::Contract); + impl ::core::clone::Clone for Verifier { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Verifier { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Verifier { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Verifier { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(stringify!(Verifier)) + .field(&self.address()) + .finish() + } + } + impl Verifier { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + VERIFIER_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + VERIFIER_ABI.clone(), + VERIFIER_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `verifyProof` (0xaf83a18d) function + pub fn verify_proof( + &self, + vk: ::ethers::core::types::Address, + proof: ::ethers::core::types::Bytes, + instances: ::std::vec::Vec<::ethers::core::types::U256>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 131, 161, 141], (vk, proof, instances)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for Verifier { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "verifyProof", abi = "verifyProof(address,bytes,uint256[])")] + pub struct VerifyProofCall { + pub vk: ::ethers::core::types::Address, + pub proof: ::ethers::core::types::Bytes, + pub instances: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all return fields from the `verifyProof` function with signature `verifyProof(address,bytes,uint256[])` and selector `0xaf83a18d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct VerifyProofReturn(pub bool); +} diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs index f374da4c..06b5c240 100644 --- a/backend/src/contracts/generated/summa_contract.rs +++ b/backend/src/contracts/generated/summa_contract.rs @@ -7,18 +7,21 @@ pub use summa::*; clippy::upper_case_acronyms, clippy::type_complexity, dead_code, - non_camel_case_types, + non_camel_case_types )] pub mod summa { #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verificationKey\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_polynomialEncodingVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"currenciesCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"currenciesCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"struct Summa.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verificationKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]}]"; + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verifyingKey\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_polynomialEncodingVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_grandSumVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IInclusionVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"string[]\",\"name\":\"cryptocurrencyNames\",\"type\":\"string[]\",\"components\":[]},{\"internalType\":\"string[]\",\"name\":\"cryptocurrencyChains\",\"type\":\"string[]\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256[]\",\"name\":\"totalBalances\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"snarkProof\",\"type\":\"bytes\",\"components\":[],\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"grandSumProof\",\"type\":\"bytes\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"config\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"snarkProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"grandSumProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"totalBalances\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"inclusionProof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"challenges\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyingKey\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]}]"; ///The parsed JSON ABI of the contract. - pub static SUMMA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(|| - ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid")); + pub static SUMMA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); #[rustfmt::skip] const __BYTECODE: &[u8] = &[ - 96, - 160, + 97, + 1, + 0, 96, 64, 82, @@ -28,7 +31,7 @@ pub mod summa { 98, 0, 0, - 17, + 18, 87, 96, 0, @@ -41,15 +44,15 @@ pub mod summa { 81, 98, 0, - 27, - 207, + 40, + 240, 56, 3, 128, 98, 0, - 27, - 207, + 40, + 240, 131, 57, 129, @@ -62,23 +65,23 @@ pub mod summa { 98, 0, 0, - 52, + 53, 145, 98, 0, - 1, - 215, + 7, + 75, 86, 91, 98, 0, 0, - 63, + 64, 51, 98, 0, - 1, - 110, + 4, + 37, 86, 91, 96, @@ -89,12 +92,12 @@ pub mod summa { 160, 27, 3, - 132, + 135, 22, 98, 0, 0, - 155, + 156, 87, 96, 64, @@ -174,10 +177,6 @@ pub mod summa { 253, 91, 96, - 2, - 128, - 84, - 96, 1, 96, 1, @@ -185,32 +184,20 @@ pub mod summa { 160, 27, 3, - 25, + 135, 22, 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 134, + 128, + 82, 129, - 22, - 145, - 144, - 145, - 23, - 144, - 145, - 85, + 81, 131, - 22, + 81, + 20, 98, 0, 1, - 32, + 20, 87, 96, 64, @@ -232,65 +219,68 @@ pub mod summa { 1, 82, 96, - 44, + 47, 96, 36, 130, 1, 82, 127, - 73, - 110, - 118, - 97, - 108, - 105, - 100, - 32, + 67, + 114, + 121, 112, + 116, 111, - 108, + 99, + 117, + 114, + 114, + 101, + 110, + 99, 121, + 32, 110, - 111, - 109, - 105, 97, - 108, - 32, + 109, 101, + 115, + 32, + 97, 110, - 99, - 111, 100, + 32, + 99, + 104, + 97, 105, 110, - 103, + 115, 32, - 118, - 101, - 114, - 105, 96, 68, 130, 1, 82, - 107, - 102, - 105, - 101, - 114, - 32, - 97, - 100, - 100, - 114, - 101, - 115, - 115, + 110, + 13, + 206, + 173, + 172, + 76, + 174, + 68, + 13, + 173, + 46, + 109, + 172, + 46, + 140, + 109, 96, - 160, + 139, 27, 96, 100, @@ -303,1439 +293,5915 @@ pub mod summa { 98, 0, 0, - 146, + 147, 86, 91, 96, + 0, + 91, + 131, + 81, + 129, + 16, + 21, + 98, + 0, 1, - 96, - 1, - 96, - 160, - 27, - 3, - 144, - 146, - 22, - 96, - 128, - 82, - 96, - 64, - 128, + 209, + 87, + 131, + 129, + 129, 81, - 128, - 130, + 129, + 16, + 98, + 0, 1, - 144, - 145, - 82, - 97, - 255, - 255, - 144, - 145, - 22, - 128, - 130, - 82, + 54, + 87, + 98, + 0, + 1, + 54, + 98, + 0, + 8, + 39, + 86, + 91, 96, - 255, - 144, - 146, - 22, + 32, + 2, 96, 32, - 144, - 145, 1, - 129, - 144, - 82, - 96, 1, + 81, + 81, + 96, + 0, + 20, + 21, 128, - 84, + 21, 98, - 1, - 0, 0, - 144, - 146, - 2, - 98, - 255, - 255, - 255, - 25, - 144, - 146, - 22, - 144, - 146, - 23, - 23, - 144, - 85, + 1, + 110, + 87, 80, + 130, + 129, + 129, + 81, + 129, + 16, 98, 0, - 2, - 74, - 86, - 91, - 96, - 0, - 128, - 84, - 96, 1, 96, + 87, + 98, + 0, 1, 96, - 160, - 27, - 3, - 131, - 129, - 22, + 98, + 0, + 8, + 39, + 86, + 91, + 96, + 32, + 2, 96, + 32, + 1, 1, + 81, + 81, 96, + 0, + 20, + 21, + 91, + 98, + 0, 1, + 188, + 87, 96, - 160, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, 27, - 3, - 25, - 131, - 22, 129, - 23, - 132, - 85, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, 96, - 64, - 81, - 145, - 144, - 146, 22, - 146, - 131, - 145, + 96, + 36, + 130, + 1, + 82, 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, - 20, - 19, - 68, - 205, - 31, - 208, - 164, - 242, - 132, - 25, 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, - 24, - 111, - 107, + 110, + 118, + 97, + 108, + 105, 100, - 87, - 224, - 145, - 144, - 163, - 80, - 80, - 86, - 91, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 121, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, + 68, + 130, 1, + 82, 96, + 100, 1, - 96, - 160, - 27, - 3, - 129, - 22, - 129, - 20, 98, 0, - 1, - 212, - 87, - 96, 0, - 128, - 253, - 91, - 80, + 147, 86, 91, - 96, - 0, - 128, - 96, - 0, - 128, - 96, 128, - 133, - 135, - 3, - 18, - 21, 98, 0, 1, - 238, - 87, - 96, - 0, - 128, - 253, - 91, - 132, - 81, + 200, + 129, 98, 0, - 1, - 251, - 129, + 8, + 83, + 86, + 91, + 145, + 80, + 80, 98, 0, 1, - 190, + 23, 86, 91, - 96, - 32, - 134, - 1, - 81, - 144, - 148, 80, 98, 0, - 2, - 14, - 129, + 1, + 230, + 135, + 132, + 81, + 131, 98, 0, - 1, - 190, + 4, + 117, + 96, + 32, + 27, + 96, + 32, + 28, 86, 91, - 96, - 64, - 134, - 1, - 81, - 144, - 147, - 80, - 97, - 255, - 255, - 129, - 22, - 129, - 20, 98, 0, 2, - 39, + 90, 87, 96, - 0, - 128, - 253, - 91, - 96, - 96, - 134, - 1, + 64, 81, - 144, - 146, - 80, + 98, + 70, + 27, + 205, 96, - 255, - 129, - 22, + 229, + 27, 129, - 20, - 98, - 0, - 2, - 63, - 87, + 82, 96, - 0, - 128, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 60, + 96, + 36, + 130, + 1, + 82, + 127, + 84, + 104, + 101, + 32, + 99, + 111, + 110, + 102, + 105, + 103, + 32, + 112, + 97, + 114, + 97, + 109, + 101, + 116, + 101, + 114, + 115, + 32, + 100, + 111, + 32, + 110, + 111, + 116, + 32, + 99, + 111, + 114, + 96, + 68, + 130, + 1, + 82, + 127, + 114, + 101, + 115, + 112, + 111, + 110, + 100, + 32, + 116, + 111, + 32, + 116, + 104, + 101, + 32, + 118, + 101, + 114, + 105, + 102, + 121, + 105, + 110, + 103, + 32, + 107, + 101, + 121, + 0, + 0, + 0, + 0, + 96, + 100, + 130, + 1, + 82, + 96, + 132, + 1, + 98, + 0, + 0, + 147, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 134, + 22, + 98, + 0, + 2, + 199, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 44, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 112, + 111, + 108, + 121, + 110, + 111, + 109, + 105, + 97, + 108, + 32, + 101, + 110, + 99, + 111, + 100, + 105, + 110, + 103, + 32, + 118, + 101, + 114, + 105, + 96, + 68, + 130, + 1, + 82, + 107, + 102, + 105, + 101, + 114, + 32, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 96, + 160, + 27, + 96, + 100, + 130, + 1, + 82, + 96, + 132, + 1, + 98, + 0, + 0, + 147, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 128, + 135, + 22, + 96, + 160, + 82, + 133, + 22, + 98, + 0, + 3, + 48, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 34, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 114, + 97, + 110, + 100, + 32, + 115, + 117, + 109, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 114, + 32, + 97, + 100, + 100, + 114, + 101, + 96, + 68, + 130, + 1, + 82, + 97, + 115, + 115, + 96, + 240, + 27, + 96, + 100, + 130, + 1, + 82, + 96, + 132, + 1, + 98, + 0, + 0, + 147, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 128, + 134, + 22, + 96, + 192, + 82, + 132, + 22, + 98, + 0, + 3, + 153, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 34, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 105, + 110, + 99, + 108, + 117, + 115, + 105, + 111, + 110, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 114, + 32, + 97, + 100, + 100, + 114, + 101, + 96, + 68, + 130, + 1, + 82, + 97, + 115, + 115, + 96, + 240, + 27, + 96, + 100, + 130, + 1, + 82, + 96, + 132, + 1, + 98, + 0, + 0, + 147, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 132, + 22, + 96, + 224, + 82, + 96, + 64, + 128, + 81, + 96, + 96, + 129, + 1, + 130, + 82, + 132, + 129, + 82, + 96, + 32, + 128, + 130, + 1, + 133, + 144, + 82, + 96, + 255, + 132, + 22, + 146, + 130, + 1, + 146, + 144, + 146, + 82, + 132, + 81, + 144, + 145, + 96, + 1, + 145, + 98, + 0, + 3, + 222, + 145, + 131, + 145, + 144, + 136, + 1, + 144, + 98, + 0, + 4, + 247, + 86, + 91, + 80, + 96, + 32, + 130, + 129, + 1, + 81, + 128, + 81, + 98, + 0, + 3, + 249, + 146, + 96, + 1, + 133, + 1, + 146, + 1, + 144, + 98, + 0, + 4, + 247, + 86, + 91, + 80, + 96, + 64, + 145, + 144, + 145, + 1, + 81, + 96, + 2, + 144, + 145, + 1, + 128, + 84, + 96, + 255, + 25, + 22, + 96, + 255, + 144, + 146, + 22, + 145, + 144, + 145, + 23, + 144, + 85, + 80, + 98, + 0, + 10, + 71, + 149, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 128, + 84, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 131, + 129, + 22, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 25, + 131, + 22, + 129, + 23, + 132, + 85, + 96, + 64, + 81, + 145, + 144, + 146, + 22, + 146, + 131, + 145, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, + 100, + 87, + 224, + 145, + 144, + 163, + 80, + 80, + 86, + 91, + 96, + 0, + 128, + 131, + 98, + 0, + 4, + 134, + 96, + 2, + 133, + 98, + 0, + 8, + 111, + 86, + 91, + 96, + 255, + 22, + 98, + 0, + 4, + 149, + 145, + 144, + 98, + 0, + 8, + 160, + 86, + 91, + 98, + 0, + 4, + 162, + 144, + 96, + 2, + 98, + 0, + 8, + 192, + 86, + 91, + 144, + 80, + 97, + 2, + 224, + 96, + 0, + 98, + 0, + 4, + 182, + 131, + 96, + 64, + 98, + 0, + 8, + 160, + 86, + 91, + 98, + 0, + 4, + 194, + 144, + 131, + 98, + 0, + 8, + 192, + 86, + 91, + 144, + 80, + 96, + 0, + 98, + 0, + 4, + 211, + 96, + 16, + 131, + 98, + 0, + 8, + 214, + 86, + 91, + 144, + 80, + 96, + 0, + 96, + 32, + 130, + 96, + 0, + 139, + 60, + 80, + 80, + 96, + 0, + 81, + 96, + 15, + 129, + 22, + 21, + 144, + 21, + 25, + 22, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 130, + 128, + 84, + 130, + 130, + 85, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 146, + 130, + 21, + 98, + 0, + 5, + 66, + 87, + 145, + 96, + 32, + 2, + 130, + 1, + 91, + 130, + 129, + 17, + 21, + 98, + 0, + 5, + 66, + 87, + 130, + 81, + 130, + 144, + 98, + 0, + 5, + 49, + 144, + 130, + 98, + 0, + 9, + 123, + 86, + 91, + 80, + 145, + 96, + 32, + 1, + 145, + 144, + 96, + 1, + 1, + 144, + 98, + 0, + 5, + 24, + 86, + 91, + 80, + 98, + 0, + 5, + 80, + 146, + 145, + 80, + 98, + 0, + 5, + 84, + 86, + 91, + 80, + 144, + 86, + 91, + 128, + 130, + 17, + 21, + 98, + 0, + 5, + 80, + 87, + 96, + 0, + 98, + 0, + 5, + 107, + 130, + 130, + 98, + 0, + 5, + 117, + 86, + 91, + 80, + 96, + 1, + 1, + 98, + 0, + 5, + 84, + 86, + 91, + 80, + 128, + 84, + 98, + 0, + 5, + 131, + 144, + 98, + 0, + 8, + 236, + 86, + 91, + 96, + 0, + 130, + 85, + 128, + 96, + 31, + 16, + 98, + 0, + 5, + 148, + 87, + 80, + 80, + 86, + 91, + 96, + 31, + 1, + 96, + 32, + 144, + 4, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 144, + 98, + 0, + 5, + 180, + 145, + 144, + 98, + 0, + 5, + 183, + 86, + 91, + 80, + 86, + 91, + 91, + 128, + 130, + 17, + 21, + 98, + 0, + 5, + 80, + 87, + 96, + 0, + 129, + 85, + 96, + 1, + 1, + 98, + 0, + 5, + 184, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 98, + 0, + 5, + 180, + 87, + 96, + 0, + 128, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 65, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 96, + 64, + 81, + 96, + 31, + 130, + 1, + 96, + 31, + 25, + 22, + 129, + 1, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 129, + 17, + 130, + 130, + 16, + 23, + 21, + 98, + 0, + 6, + 37, + 87, + 98, + 0, + 6, + 37, + 98, + 0, + 5, + 228, + 86, + 91, + 96, + 64, + 82, + 145, + 144, + 80, + 86, + 91, + 96, + 0, + 96, + 31, + 131, + 129, + 132, + 1, + 18, + 98, + 0, + 6, + 64, + 87, + 96, + 0, + 128, + 253, + 91, + 130, + 81, + 96, + 32, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 128, + 131, + 17, + 21, + 98, + 0, + 6, + 95, + 87, + 98, + 0, + 6, + 95, + 98, + 0, + 5, + 228, + 86, + 91, + 130, + 96, + 5, + 27, + 98, + 0, + 6, + 112, + 131, + 130, + 1, + 98, + 0, + 5, + 250, + 86, + 91, + 147, + 132, + 82, + 134, + 129, + 1, + 131, + 1, + 147, + 131, + 129, + 1, + 144, + 137, + 134, + 17, + 21, + 98, + 0, + 6, + 139, + 87, + 96, + 0, + 128, + 253, + 91, + 132, + 137, + 1, + 146, + 80, + 91, + 133, + 131, + 16, + 21, + 98, + 0, + 7, + 62, + 87, + 130, + 81, + 132, + 129, + 17, + 21, + 98, + 0, + 6, + 171, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 137, + 1, + 96, + 63, + 129, + 1, + 139, + 19, + 98, + 0, + 6, + 190, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 133, + 129, + 1, + 81, + 133, + 129, + 17, + 21, + 98, + 0, + 6, + 213, + 87, + 98, + 0, + 6, + 213, + 98, + 0, + 5, + 228, + 86, + 91, + 98, + 0, + 6, + 232, + 129, + 138, + 1, + 96, + 31, + 25, + 22, + 136, + 1, + 98, + 0, + 5, + 250, + 86, + 91, + 129, + 129, + 82, + 96, + 64, + 141, + 129, + 132, + 134, + 1, + 1, + 17, + 21, + 98, + 0, + 7, + 0, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 96, + 0, + 91, + 131, + 129, + 16, + 21, + 98, + 0, + 7, + 32, + 87, + 132, + 129, + 1, + 130, + 1, + 81, + 131, + 130, + 1, + 139, + 1, + 82, + 137, + 1, + 98, + 0, + 7, + 3, + 86, + 91, + 80, + 80, + 96, + 0, + 145, + 129, + 1, + 136, + 1, + 145, + 144, + 145, + 82, + 131, + 82, + 80, + 145, + 132, + 1, + 145, + 144, + 132, + 1, + 144, + 98, + 0, + 6, + 145, + 86, + 91, + 153, + 152, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 0, + 96, + 224, + 136, + 138, + 3, + 18, + 21, + 98, + 0, + 7, + 103, + 87, + 96, + 0, + 128, + 253, + 91, + 135, + 81, + 98, + 0, + 7, + 116, + 129, + 98, + 0, + 5, + 206, + 86, + 91, + 96, + 32, + 137, + 1, + 81, + 144, + 151, + 80, + 98, + 0, + 7, + 135, + 129, + 98, + 0, + 5, + 206, + 86, + 91, + 96, + 64, + 137, + 1, + 81, + 144, + 150, + 80, + 98, + 0, + 7, + 154, + 129, + 98, + 0, + 5, + 206, + 86, + 91, + 96, + 96, + 137, + 1, + 81, + 144, + 149, + 80, + 98, + 0, + 7, + 173, + 129, + 98, + 0, + 5, + 206, + 86, + 91, + 96, + 128, + 137, + 1, + 81, + 144, + 148, + 80, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 128, + 130, + 17, + 21, + 98, + 0, + 7, + 203, + 87, + 96, + 0, + 128, + 253, + 91, + 98, + 0, + 7, + 217, + 139, + 131, + 140, + 1, + 98, + 0, + 6, + 45, + 86, + 91, + 148, + 80, + 96, + 160, + 138, + 1, + 81, + 145, + 80, + 128, + 130, + 17, + 21, + 98, + 0, + 7, + 240, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 98, + 0, + 7, + 255, + 138, + 130, + 139, + 1, + 98, + 0, + 6, + 45, + 86, + 91, + 146, + 80, + 80, + 96, + 192, + 136, + 1, + 81, + 96, + 255, + 129, + 22, + 129, + 20, + 98, + 0, + 8, + 23, + 87, + 96, + 0, + 128, + 253, + 91, + 128, + 145, + 80, + 80, + 146, + 149, + 152, + 145, + 148, + 151, + 80, + 146, + 149, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 50, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 17, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 96, + 0, + 96, + 1, + 130, + 1, + 98, + 0, + 8, + 104, + 87, + 98, + 0, + 8, + 104, + 98, + 0, + 8, + 61, + 86, + 91, + 80, + 96, + 1, + 1, + 144, + 86, + 91, + 96, + 0, + 96, + 255, + 131, + 22, + 128, + 98, + 0, + 8, + 145, + 87, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 18, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 128, + 96, + 255, + 132, + 22, + 4, + 145, + 80, + 80, + 146, + 145, + 80, + 80, + 86, + 91, + 128, + 130, + 2, + 129, + 21, + 130, + 130, + 4, + 132, + 20, + 23, + 98, + 0, + 8, + 186, + 87, + 98, + 0, + 8, + 186, + 98, + 0, + 8, + 61, + 86, + 91, + 146, + 145, + 80, + 80, + 86, + 91, + 128, + 130, + 1, + 128, + 130, + 17, + 21, + 98, + 0, + 8, + 186, + 87, + 98, + 0, + 8, + 186, + 98, + 0, + 8, + 61, + 86, + 91, + 129, + 129, + 3, + 129, + 129, + 17, + 21, + 98, + 0, + 8, + 186, + 87, + 98, + 0, + 8, + 186, + 98, + 0, + 8, + 61, + 86, + 91, + 96, + 1, + 129, + 129, + 28, + 144, + 130, + 22, + 128, + 98, + 0, + 9, + 1, + 87, + 96, + 127, + 130, + 22, + 145, + 80, + 91, + 96, + 32, + 130, + 16, + 129, + 3, + 98, + 0, + 9, + 34, + 87, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 34, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 80, + 145, + 144, + 80, + 86, + 91, + 96, + 31, + 130, + 17, + 21, + 98, + 0, + 9, + 118, + 87, + 96, + 0, + 129, + 129, + 82, + 96, + 32, + 129, + 32, + 96, + 31, + 133, + 1, + 96, + 5, + 28, + 129, + 1, + 96, + 32, + 134, + 16, + 21, + 98, + 0, + 9, + 81, + 87, + 80, + 128, + 91, + 96, + 31, + 133, + 1, + 96, + 5, + 28, + 130, + 1, + 145, + 80, + 91, + 129, + 129, + 16, + 21, + 98, + 0, + 9, + 114, + 87, + 130, + 129, + 85, + 96, + 1, + 1, + 98, + 0, + 9, + 93, + 86, + 91, + 80, + 80, + 80, + 91, + 80, + 80, + 80, + 86, + 91, + 129, + 81, + 96, + 1, + 96, + 1, + 96, + 64, + 27, + 3, + 129, + 17, + 21, + 98, + 0, + 9, + 151, + 87, + 98, + 0, + 9, + 151, + 98, + 0, + 5, + 228, + 86, + 91, + 98, + 0, + 9, + 175, + 129, + 98, + 0, + 9, + 168, + 132, + 84, + 98, + 0, + 8, + 236, + 86, + 91, + 132, + 98, + 0, + 9, + 40, + 86, + 91, + 96, + 32, + 128, + 96, + 31, + 131, + 17, + 96, + 1, + 129, + 20, + 98, + 0, + 9, + 231, + 87, + 96, + 0, + 132, + 21, + 98, + 0, + 9, + 206, + 87, + 80, + 133, + 131, + 1, + 81, + 91, + 96, + 0, + 25, + 96, + 3, + 134, + 144, + 27, + 28, + 25, + 22, + 96, + 1, + 133, + 144, + 27, + 23, + 133, + 85, + 98, + 0, + 9, + 114, + 86, + 91, + 96, + 0, + 133, + 129, + 82, + 96, + 32, + 129, + 32, + 96, + 31, + 25, + 134, + 22, + 145, + 91, + 130, + 129, + 16, + 21, + 98, + 0, + 10, + 24, + 87, + 136, + 134, + 1, + 81, + 130, + 85, + 148, + 132, + 1, + 148, + 96, + 1, + 144, + 145, + 1, + 144, + 132, + 1, + 98, + 0, + 9, + 247, + 86, + 91, + 80, + 133, + 130, + 16, + 21, + 98, + 0, + 10, + 55, + 87, + 135, + 133, + 1, + 81, + 96, + 0, + 25, + 96, + 3, + 136, + 144, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 129, + 85, + 91, + 80, + 80, + 80, + 80, + 80, + 96, + 1, + 144, + 129, + 27, + 1, + 144, + 85, + 80, + 86, + 91, + 96, + 128, + 81, + 96, + 160, + 81, + 96, + 192, + 81, + 96, + 224, + 81, + 97, + 30, + 90, + 98, + 0, + 10, + 150, + 96, + 0, + 57, + 96, + 0, + 97, + 12, + 184, + 1, + 82, + 96, + 0, + 97, + 5, + 20, + 1, + 82, + 96, + 0, + 97, + 3, + 80, + 1, + 82, + 96, + 0, + 129, + 129, + 97, + 1, + 56, + 1, + 82, + 129, + 129, + 97, + 3, + 125, + 1, + 82, + 129, + 129, + 97, + 5, + 65, + 1, + 82, + 97, + 12, + 229, + 1, + 82, + 97, + 30, + 90, + 96, + 0, + 243, + 254, + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 169, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 121, + 80, + 197, + 248, + 17, + 97, + 0, + 113, + 87, + 128, + 99, + 121, + 80, + 197, + 248, + 20, + 97, + 1, + 51, + 87, + 128, + 99, + 141, + 165, + 203, + 91, + 20, + 97, + 1, + 114, + 87, + 128, + 99, + 156, + 56, + 37, + 89, + 20, + 97, + 1, + 131, + 87, + 128, + 99, + 163, + 196, + 188, + 248, + 20, + 97, + 1, + 166, + 87, + 128, + 99, + 199, + 221, + 202, + 14, + 20, + 97, + 1, + 201, + 87, + 128, + 99, + 242, + 253, + 227, + 139, + 20, + 97, + 1, + 220, + 87, + 96, + 0, + 128, + 253, + 91, + 128, + 99, + 5, + 171, + 152, + 96, + 20, + 97, + 0, + 174, + 87, + 128, + 99, + 25, + 179, + 57, + 104, + 20, + 97, + 0, + 195, + 87, + 128, + 99, + 73, + 206, + 137, + 151, + 20, + 97, + 0, + 236, + 87, + 128, + 99, + 113, + 80, + 24, + 166, + 20, + 97, + 1, + 12, + 87, + 128, + 99, + 121, + 80, + 44, + 85, + 20, + 97, + 1, + 20, + 87, + 91, + 96, + 0, + 128, + 253, + 91, + 97, + 0, + 193, + 97, + 0, + 188, + 54, + 96, + 4, + 97, + 20, + 203, + 86, + 91, + 97, + 1, + 239, + 86, + 91, + 0, + 91, + 97, + 0, + 214, + 97, + 0, + 209, + 54, + 96, + 4, + 97, + 21, + 103, + 86, + 91, + 97, + 6, + 96, + 86, + 91, + 96, + 64, + 81, + 97, + 0, + 227, + 145, + 144, + 97, + 22, + 59, + 86, + 91, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 243, + 91, + 97, + 0, + 255, + 97, + 0, + 250, + 54, + 96, + 4, + 97, + 21, + 103, + 86, + 91, + 97, + 9, + 115, + 86, + 91, + 96, + 64, + 81, + 97, + 0, + 227, + 145, + 144, + 97, + 22, + 85, + 86, + 91, + 97, + 0, + 193, + 97, + 10, + 13, + 86, + 91, + 96, + 3, + 84, + 97, + 1, + 33, + 144, + 96, + 255, + 22, + 129, + 86, + 91, + 96, + 64, + 81, + 96, + 255, + 144, + 145, + 22, + 129, + 82, + 96, + 32, + 1, + 97, + 0, + 227, + 86, + 91, + 97, + 1, + 90, + 127, + 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, + 0, + 0, + 129, + 86, + 91, + 96, + 64, + 81, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 144, + 145, + 22, + 129, + 82, + 96, + 32, + 1, + 97, + 0, + 227, + 86, + 91, + 96, + 0, + 84, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 22, + 97, + 1, + 90, + 86, + 91, + 97, + 1, + 150, + 97, + 1, + 145, + 54, + 96, + 4, + 97, + 22, + 216, + 86, + 91, + 97, + 10, + 33, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, + 97, + 0, + 227, + 86, + 91, + 97, + 1, + 185, + 97, + 1, + 180, + 54, + 96, + 4, + 97, + 21, + 103, + 86, + 91, + 97, + 13, + 95, + 86, + 91, + 96, + 64, + 81, + 97, + 0, + 227, + 148, + 147, + 146, + 145, + 144, + 97, + 23, + 106, + 86, + 91, + 97, + 0, + 193, + 97, + 1, + 215, + 54, + 96, + 4, + 97, + 23, + 183, + 86, + 91, + 97, + 15, + 191, + 86, + 91, + 97, + 0, + 193, + 97, + 1, + 234, + 54, + 96, + 4, + 97, + 25, + 17, + 86, + 91, + 97, + 18, + 96, + 86, + 91, + 97, + 1, + 247, + 97, + 18, + 217, + 86, + 91, + 96, + 0, + 130, + 81, + 17, + 97, + 2, + 77, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 29, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 116, + 111, + 116, + 97, + 108, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 115, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 91, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 253, + 91, + 129, + 81, + 97, + 2, + 90, + 144, + 96, + 64, + 97, + 25, + 80, + 86, + 91, + 131, + 20, + 97, + 2, + 168, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 30, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 114, + 97, + 110, + 100, + 32, + 115, + 117, + 109, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 68, + 86, + 91, + 130, + 133, + 17, + 97, + 2, + 247, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 26, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 115, + 110, + 97, + 114, + 107, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 68, + 86, + 91, + 96, + 64, + 128, + 81, + 96, + 1, + 128, + 130, + 82, + 129, + 131, + 1, + 144, + 146, + 82, + 96, + 0, + 145, + 96, + 32, + 128, + 131, + 1, + 144, + 128, + 54, + 131, + 55, + 1, + 144, + 80, + 80, + 144, + 80, + 96, + 1, + 129, + 96, + 0, + 129, + 81, + 129, + 16, + 97, + 3, + 46, + 87, + 97, + 3, + 46, + 97, + 25, + 109, + 86, + 91, + 96, + 32, + 144, + 129, + 2, + 145, + 144, + 145, + 1, + 1, + 82, + 96, + 64, + 81, + 99, + 175, + 131, + 161, + 141, + 96, + 224, + 27, + 129, + 82, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 127, + 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, + 0, + 0, + 22, + 144, + 99, + 175, + 131, + 161, + 141, + 144, + 97, + 3, + 171, + 144, + 127, + 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, + 0, + 0, + 144, + 139, + 144, + 139, + 144, + 135, + 144, + 96, + 4, + 1, + 97, + 25, + 231, + 86, + 91, + 96, + 32, + 96, + 64, + 81, + 128, + 131, + 3, + 129, + 134, + 90, + 250, + 21, + 128, + 21, + 97, + 3, + 200, + 87, + 61, + 96, + 0, + 128, + 62, + 61, + 96, + 0, + 253, + 91, + 80, + 80, + 80, + 80, + 96, + 64, + 81, + 61, + 96, + 31, + 25, + 96, + 31, + 130, + 1, + 22, + 130, + 1, + 128, + 96, + 64, + 82, + 80, + 129, + 1, + 144, + 97, + 3, + 236, + 145, + 144, + 97, + 26, + 30, + 86, + 91, + 97, + 4, + 46, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 19, + 96, + 36, + 130, + 1, + 82, + 114, + 36, + 183, + 59, + 48, + 182, + 52, + 178, + 16, + 57, + 183, + 48, + 185, + 53, + 144, + 56, + 57, + 55, + 183, + 179, + 96, + 105, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 68, + 86, + 91, + 96, + 1, + 84, + 131, + 81, + 20, + 97, + 4, + 166, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 58, + 96, + 36, + 130, + 1, + 82, + 127, + 76, + 105, + 97, + 98, + 105, + 108, + 105, + 116, + 121, + 32, + 99, + 111, + 109, + 109, + 105, + 116, + 109, + 101, + 110, + 116, + 115, + 32, + 97, + 110, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 96, + 68, + 130, + 1, + 82, + 127, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 105, + 101, + 115, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 109, + 105, + 115, + 109, + 97, + 116, + 99, + 104, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 100, + 130, + 1, + 82, + 96, + 132, + 1, + 97, + 2, + 68, + 86, + 91, + 54, + 96, + 0, + 136, + 129, + 137, + 97, + 4, + 183, + 137, + 96, + 64, + 97, + 26, + 64, + 86, + 91, + 146, + 97, + 4, + 196, + 147, + 146, + 145, + 144, + 97, + 26, + 83, + 86, + 91, + 144, + 146, + 80, + 144, + 80, + 96, + 0, + 135, + 135, + 97, + 4, + 218, + 132, + 96, + 64, + 129, + 136, + 97, + 26, + 83, + 86, + 91, + 96, + 64, + 81, + 96, + 32, + 1, + 97, + 4, + 237, + 148, + 147, + 146, + 145, + 144, + 97, + 26, + 125, + 86, + 91, + 96, + 64, + 128, + 81, + 96, + 31, + 25, + 129, + 132, + 3, + 1, + 129, + 82, + 144, + 130, + 144, + 82, + 99, + 175, + 131, + 161, + 141, + 96, + 224, + 27, + 130, + 82, + 145, + 80, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 127, + 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, + 0, + 0, + 22, + 144, + 99, + 175, + 131, + 161, + 141, + 144, + 97, + 5, + 109, + 144, + 127, + 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, + 0, + 0, + 144, + 133, + 144, + 139, + 144, + 96, + 4, + 1, + 97, + 26, + 159, + 86, + 91, + 96, + 32, + 96, + 64, + 81, + 128, + 131, + 3, + 129, + 134, + 90, + 250, + 21, + 128, + 21, + 97, + 5, + 138, + 87, + 61, + 96, + 0, + 128, + 62, + 61, + 96, + 0, 253, 91, - 147, - 150, + 80, + 80, + 80, + 80, + 96, + 64, + 81, + 61, + 96, + 31, + 25, + 96, + 31, + 130, + 1, + 22, + 130, + 1, + 128, + 96, + 64, + 82, + 80, + 129, + 1, + 144, + 97, + 5, + 174, + 145, + 144, + 97, + 26, + 30, + 86, + 91, + 97, + 5, + 250, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 23, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 114, + 97, + 110, + 100, + 32, + 115, + 117, + 109, + 32, + 112, + 114, + 111, + 111, + 102, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 68, + 86, + 91, + 96, + 0, + 133, + 129, + 82, + 96, + 5, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 97, + 6, + 19, + 131, + 133, + 131, + 97, + 27, + 104, + 86, + 91, + 80, + 132, + 127, + 118, + 3, + 161, + 42, + 136, + 56, + 165, + 101, + 113, + 93, + 219, + 91, + 191, + 98, + 91, + 63, + 0, + 165, + 230, + 244, + 121, + 52, + 55, + 83, + 121, + 99, + 227, + 12, + 59, + 148, + 149, + 220, + 135, + 133, + 133, + 140, + 140, + 96, + 64, + 81, + 97, + 6, + 76, + 149, + 148, + 147, + 146, + 145, + 144, + 97, + 28, + 41, + 86, + 91, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 162, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 97, + 6, + 139, + 96, + 64, + 81, + 128, + 96, + 128, + 1, + 96, + 64, + 82, + 128, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 80, + 144, + 86, + 91, + 96, + 0, + 130, + 129, + 82, + 96, + 6, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 84, + 97, + 6, + 221, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 20, + 96, + 36, + 130, + 1, + 82, + 115, + 16, + 89, + 25, + 28, + 153, + 92, + 220, + 200, + 27, + 155, + 221, + 8, + 29, + 153, + 92, + 154, + 89, + 154, + 89, + 89, + 96, + 98, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 68, + 86, + 91, + 96, + 0, + 130, + 129, + 82, + 96, + 6, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 84, + 96, + 4, + 144, + 97, + 6, + 251, + 144, + 96, + 1, + 144, + 97, + 28, + 112, + 86, + 91, + 129, + 84, + 129, + 16, + 97, + 7, + 11, + 87, + 97, + 7, + 11, + 97, + 25, + 109, + 86, + 91, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 96, + 4, + 2, + 1, + 96, + 64, + 81, + 128, + 96, + 128, + 1, + 96, + 64, + 82, + 144, + 129, + 96, + 0, + 130, + 1, + 128, + 84, + 97, + 7, + 52, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, + 129, + 129, + 82, + 96, + 32, + 1, + 130, + 128, + 84, + 97, + 7, + 96, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 7, + 173, + 87, + 128, + 96, + 31, + 16, + 97, + 7, + 130, + 87, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, + 97, + 7, + 173, + 86, + 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 7, + 144, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, + 1, + 130, + 1, + 128, + 84, + 97, + 7, + 198, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, + 129, + 129, + 82, + 96, + 32, + 1, + 130, + 128, + 84, + 97, + 7, + 242, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 8, + 63, + 87, + 128, + 96, + 31, + 16, + 97, + 8, + 20, + 87, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, + 97, + 8, + 63, + 86, + 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 8, + 34, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, + 2, + 130, + 1, + 128, + 84, + 97, + 8, + 88, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, + 129, + 129, + 82, + 96, + 32, + 1, + 130, + 128, + 84, + 97, + 8, + 132, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 8, + 209, + 87, + 128, + 96, + 31, + 16, + 97, + 8, + 166, + 87, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, + 97, + 8, + 209, + 86, + 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 8, + 180, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, + 3, + 130, + 1, + 128, + 84, + 97, + 8, + 234, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, + 96, + 64, + 82, + 128, 146, - 149, + 145, + 144, + 129, + 129, + 82, + 96, + 32, + 1, + 130, + 128, + 84, + 97, + 9, + 22, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 9, + 99, + 87, + 128, + 96, + 31, + 16, + 97, + 9, + 56, + 87, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, + 97, + 9, + 99, + 86, + 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 9, + 70, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 80, 80, 144, - 147, 80, + 145, + 144, 80, 86, 91, 96, - 128, - 81, - 97, - 25, - 105, - 98, - 0, - 2, - 102, - 96, - 0, - 57, - 96, - 0, - 97, 5, - 231, - 1, + 96, + 32, 82, - 97, - 25, - 105, 96, 0, - 243, - 254, - 96, - 128, + 144, + 129, + 82, 96, 64, - 82, - 52, + 144, + 32, 128, - 21, + 84, 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, + 9, + 140, + 144, + 97, + 26, + 223, + 86, 91, - 80, + 128, + 96, + 31, + 1, 96, + 32, + 128, + 145, 4, - 54, - 16, - 97, - 0, - 158, - 87, + 2, 96, - 0, - 53, + 32, + 1, 96, - 224, - 28, - 128, - 99, - 125, - 220, + 64, + 81, 144, - 125, - 17, - 97, - 0, - 102, - 87, + 129, + 1, + 96, + 64, + 82, 128, - 99, - 125, - 220, + 146, + 145, 144, - 125, - 20, - 97, + 129, + 129, + 82, + 96, + 32, 1, - 62, - 87, + 130, 128, - 99, - 141, - 165, - 203, - 91, - 20, + 84, 97, - 1, - 105, - 87, - 128, - 99, - 163, - 196, - 188, - 248, - 20, + 9, + 184, + 144, 97, - 1, - 122, - 87, + 26, + 223, + 86, + 91, 128, - 99, - 199, - 221, - 202, - 14, - 20, + 21, 97, - 1, - 157, + 10, + 5, 87, 128, - 99, - 242, - 253, - 227, - 139, - 20, - 97, - 1, - 176, - 87, 96, - 0, - 128, - 253, - 91, - 128, - 99, - 25, - 179, - 57, - 104, - 20, + 31, + 16, 97, - 0, - 163, + 9, + 218, 87, - 128, - 99, - 67, - 249, - 236, - 7, - 20, 97, + 1, 0, - 204, - 87, 128, - 99, - 73, - 206, - 137, - 151, - 20, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, + 10, + 5, + 86, + 91, + 130, + 1, + 145, + 144, + 96, 0, - 225, - 87, - 128, - 99, - 113, - 80, - 24, - 166, - 20, - 97, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, 1, 1, - 87, + 144, + 96, + 32, + 1, 128, - 99, - 121, - 80, - 44, - 85, - 20, + 131, + 17, 97, + 9, + 232, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, 1, - 9, - 87, + 145, 91, - 96, - 0, - 128, - 253, + 80, + 80, + 80, + 80, + 80, + 129, + 86, 91, 97, - 0, - 182, + 10, + 21, 97, - 0, - 177, - 54, + 18, + 217, + 86, + 91, + 97, + 10, + 31, 96, - 4, + 0, 97, - 16, - 179, + 19, + 51, 86, 91, - 97, - 1, - 195, 86, 91, 96, - 64, - 81, - 97, 0, - 195, - 145, - 144, + 130, + 81, + 96, + 4, + 20, 97, - 17, - 135, - 86, - 91, + 10, + 116, + 87, 96, 64, 81, - 128, - 145, - 3, - 144, - 243, - 91, - 97, - 0, - 223, - 97, - 0, - 218, - 54, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, 96, 4, + 130, + 1, + 82, + 96, + 25, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, 97, - 18, - 200, - 86, - 91, + 108, + 105, + 100, + 32, + 99, + 104, 97, - 4, - 219, - 86, - 91, + 108, + 108, + 101, + 110, + 103, + 101, + 115, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, + 0, 0, - 91, - 97, 0, - 244, - 97, 0, - 239, - 54, 96, - 4, - 97, - 16, - 179, - 86, - 91, + 68, + 130, + 1, + 82, + 96, + 100, + 1, 97, - 9, - 32, + 2, + 68, 86, 91, 96, - 64, + 1, + 128, + 84, + 131, 81, + 144, + 145, 97, - 0, - 195, + 10, + 133, 145, - 144, 97, - 20, - 3, + 28, + 112, 86, 91, + 20, 97, - 0, - 223, - 97, - 9, - 190, - 86, - 91, + 10, + 221, + 87, 96, - 1, - 84, - 97, - 1, - 34, - 144, - 97, - 255, - 255, - 129, - 22, - 144, + 64, + 81, 98, - 1, - 0, - 0, - 144, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, 4, + 130, + 1, + 82, 96, - 255, - 22, + 34, + 96, + 36, 130, + 1, + 82, + 127, 86, - 91, - 96, - 64, - 128, - 81, 97, - 255, - 255, - 144, - 147, - 22, - 131, + 108, + 117, + 101, + 115, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 32, + 109, + 105, + 115, + 109, + 97, + 116, + 99, + 104, + 32, + 119, + 105, + 116, + 104, + 32, + 99, + 111, + 110, + 102, + 96, + 68, + 130, + 1, 82, + 97, + 105, + 103, 96, - 255, - 144, - 145, - 22, + 240, + 27, 96, - 32, - 131, + 100, + 130, 1, 82, + 96, + 132, 1, 97, - 0, - 195, + 2, + 68, 86, 91, 96, - 2, - 84, - 97, - 1, - 81, - 144, + 0, + 133, + 129, + 82, 96, - 1, + 5, 96, - 1, + 32, + 82, 96, - 160, - 27, - 3, - 22, + 64, 129, + 32, + 128, + 84, + 97, + 10, + 246, + 144, + 97, + 26, + 223, 86, 91, + 128, 96, - 64, - 81, - 96, + 31, 1, 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, 1, 96, - 160, - 27, - 3, + 64, + 81, 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, 145, - 22, + 144, + 129, 129, 82, 96, 32, 1, + 130, + 128, + 84, 97, - 0, - 195, + 11, + 34, + 144, + 97, + 26, + 223, 86, 91, + 128, + 21, + 97, + 11, + 111, + 87, + 128, 96, + 31, + 16, + 97, + 11, + 68, + 87, + 97, + 1, 0, + 128, + 131, 84, + 4, + 2, + 131, + 82, + 145, 96, + 32, 1, - 96, - 1, - 96, - 160, - 27, - 3, - 22, + 145, 97, - 1, - 81, + 11, + 111, 86, 91, - 97, - 1, - 141, - 97, + 130, 1, - 136, - 54, + 145, + 144, 96, - 4, - 97, - 16, - 179, - 86, - 91, - 97, - 9, - 210, - 86, - 91, + 0, + 82, + 96, + 32, 96, - 64, - 81, - 97, 0, - 195, - 148, - 147, - 146, - 145, + 32, 144, - 97, - 20, - 22, - 86, 91, - 97, - 0, - 223, - 97, + 129, + 84, + 129, + 82, + 144, + 96, 1, - 171, - 54, + 1, + 144, 96, - 4, - 97, - 20, - 110, - 86, - 91, + 32, + 1, + 128, + 131, + 17, 97, - 12, - 50, - 86, + 11, + 82, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, 91, - 97, + 80, + 80, + 80, + 80, + 80, + 144, + 80, + 96, 0, - 223, + 133, + 81, + 130, + 81, 97, - 1, - 190, - 54, - 96, - 4, + 11, + 134, + 145, + 144, 97, - 21, - 200, + 26, + 64, 86, 91, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, 97, - 14, - 211, + 11, + 158, + 87, + 97, + 11, + 158, + 97, + 19, + 204, 86, 91, - 97, - 1, - 238, 96, 64, 81, + 144, 128, - 96, - 128, - 1, - 96, - 64, + 130, 82, 128, 96, - 96, - 129, - 82, - 96, - 32, + 31, 1, 96, - 96, - 129, - 82, + 31, + 25, + 22, 96, 32, 1, + 130, + 1, 96, - 96, - 129, + 64, 82, + 128, + 21, + 97, + 11, + 200, + 87, 96, 32, + 130, 1, - 96, - 96, 129, - 82, - 80, + 128, + 54, + 131, + 55, + 1, 144, - 86, + 80, 91, + 80, + 144, + 80, 96, 0, - 130, + 91, + 134, + 81, 129, - 82, - 96, - 5, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 84, + 16, + 21, 97, - 2, - 69, + 12, + 47, 87, - 96, - 64, + 134, + 129, + 129, 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, 129, - 82, + 16, + 97, + 11, + 233, + 87, + 97, + 11, + 233, + 97, + 25, + 109, + 86, + 91, 96, 32, - 96, - 4, - 130, 1, - 82, - 96, - 20, - 96, - 36, - 130, 1, - 82, - 115, - 16, - 89, - 25, + 81, + 96, + 248, 28, - 153, - 92, - 220, - 200, - 27, - 155, - 221, - 8, - 29, - 153, - 92, - 154, - 89, - 154, - 89, - 89, 96, - 98, + 248, 27, - 96, - 68, 130, - 1, - 82, - 96, - 100, - 1, - 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 253, - 91, - 96, - 0, 130, 129, - 82, - 96, - 5, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 84, - 96, - 3, - 144, - 97, - 2, - 99, - 144, - 96, - 1, - 144, - 97, - 22, - 7, - 86, - 91, - 129, - 84, + 81, 129, 16, 97, - 2, - 115, + 12, + 6, 87, 97, - 2, - 115, + 12, + 6, 97, - 22, - 32, + 25, + 109, 86, 91, - 144, - 96, - 0, - 82, - 96, - 32, 96, - 0, 32, + 1, + 1, 144, 96, - 4, - 2, 1, 96, - 64, - 81, - 128, - 96, - 128, 1, 96, - 64, - 82, + 248, + 27, + 3, + 25, + 22, 144, 129, 96, 0, - 130, - 1, + 26, + 144, + 83, + 80, 128, - 84, 97, - 2, - 156, - 144, + 12, + 39, + 129, + 97, + 28, + 131, + 86, + 91, + 145, + 80, + 80, + 97, + 11, + 206, + 86, + 91, + 80, + 96, + 0, + 91, + 130, + 81, + 129, + 16, + 21, + 97, + 12, + 160, + 87, + 130, + 129, + 129, + 81, + 129, + 16, + 97, + 12, + 78, + 87, + 97, + 12, + 78, 97, - 22, - 54, + 25, + 109, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, 96, 32, 1, - 96, - 64, - 81, - 144, - 129, 1, + 81, 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, + 248, + 28, 96, - 32, - 1, + 248, + 27, 130, - 128, - 84, + 136, + 81, + 131, 97, - 2, - 200, + 12, + 103, + 145, 144, 97, - 22, - 54, + 26, + 64, 86, 91, - 128, - 21, - 97, - 3, - 21, - 87, - 128, - 96, - 31, + 129, + 81, + 129, 16, 97, - 2, - 234, + 12, + 119, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 12, + 119, 97, - 3, - 21, + 25, + 109, 86, 91, - 130, + 96, + 32, + 1, 1, - 145, 144, 96, - 0, - 82, + 1, 96, - 32, + 1, 96, - 0, - 32, + 248, + 27, + 3, + 25, + 22, 144, - 91, 129, - 84, - 129, - 82, - 144, 96, - 1, - 1, + 0, + 26, 144, - 96, - 32, - 1, + 83, + 80, 128, - 131, - 17, 97, - 2, - 248, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, + 12, + 152, + 129, + 97, + 28, + 131, + 86, 91, + 145, 80, 80, + 97, + 12, + 51, + 86, + 91, 80, - 80, - 80, + 96, + 64, + 81, + 99, + 35, + 251, + 90, + 213, + 96, + 225, + 27, 129, 82, 96, - 32, 1, 96, 1, - 130, - 1, - 128, - 84, - 97, + 96, + 160, + 27, 3, - 46, + 127, + 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, + 0, + 0, + 22, + 144, + 99, + 71, + 246, + 181, + 170, + 144, + 97, + 13, + 19, + 144, + 127, + 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, + 0, + 0, 144, + 133, + 144, + 138, + 144, + 138, + 144, + 96, + 4, + 1, 97, - 22, - 54, + 28, + 156, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, 96, 32, - 1, 96, 64, 81, - 144, - 129, - 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, 128, - 84, - 97, + 131, 3, + 129, + 134, 90, - 144, - 97, - 22, - 54, - 86, - 91, + 250, + 21, 128, 21, 97, - 3, - 167, + 13, + 48, 87, - 128, + 61, 96, - 31, - 16, - 97, - 3, - 124, - 87, - 97, - 1, 0, 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, - 97, - 3, - 167, - 86, - 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, - 96, - 32, + 62, + 61, 96, 0, - 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, - 96, - 32, - 1, - 128, - 131, - 17, - 97, - 3, - 138, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, + 253, 91, 80, 80, 80, 80, - 80, - 129, - 82, 96, - 32, - 1, + 64, + 81, + 61, 96, - 2, + 31, + 25, + 96, + 31, 130, 1, - 128, - 84, - 97, - 3, - 192, - 144, - 97, 22, - 54, - 86, - 91, - 128, - 96, - 31, + 130, 1, - 96, - 32, 128, - 145, - 4, - 2, - 96, - 32, - 1, - 96, - 64, - 81, - 144, - 129, - 1, 96, 64, 82, - 128, - 146, - 145, - 144, - 129, + 80, 129, - 82, - 96, - 32, 1, - 130, - 128, - 84, + 144, 97, - 3, - 236, + 13, + 84, + 145, 144, 97, - 22, - 54, + 26, + 30, + 86, + 91, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, 86, 91, - 128, - 21, - 97, - 4, - 57, - 87, - 128, 96, - 31, + 4, + 129, + 129, + 84, + 129, 16, 97, - 4, - 14, + 13, + 111, 87, - 97, - 1, + 96, 0, 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, - 97, - 4, - 57, - 86, + 253, 91, - 130, - 1, - 145, 144, 96, 0, 82, 96, 32, - 96, - 0, - 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, - 96, - 32, - 1, - 128, - 131, - 17, - 97, - 4, - 28, - 87, - 130, + 96, + 0, + 32, 144, - 3, 96, - 31, - 22, - 130, + 4, + 2, 1, + 96, + 0, 145, - 91, - 80, - 80, - 80, 80, + 144, 80, - 129, - 82, - 96, - 32, - 1, + 128, 96, - 3, - 130, + 0, 1, 128, 84, 97, - 4, - 82, + 13, + 146, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -1774,27 +6240,27 @@ pub mod summa { 128, 84, 97, - 4, - 126, + 13, + 190, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 4, - 203, + 14, + 11, 87, 128, 96, 31, 16, 97, - 4, - 160, + 13, + 224, 87, 97, 1, @@ -1812,8 +6278,8 @@ pub mod summa { 1, 145, 97, - 4, - 203, + 14, + 11, 86, 91, 130, @@ -1846,8 +6312,8 @@ pub mod summa { 131, 17, 97, - 4, - 174, + 13, + 238, 87, 130, 144, @@ -1864,663 +6330,475 @@ pub mod summa { 80, 80, 80, - 129, - 82, - 80, - 80, 144, - 80, - 145, - 144, - 80, - 86, - 91, + 128, + 96, + 1, + 1, + 128, + 84, 97, - 4, - 227, + 14, + 32, + 144, 97, - 15, - 76, + 26, + 223, 86, 91, - 130, - 81, - 97, - 21, - 0, - 20, - 97, - 5, - 44, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, + 128, 96, - 229, - 27, - 129, - 82, + 31, + 1, 96, 32, - 96, + 128, + 145, 4, - 130, - 1, - 82, - 96, - 20, - 96, - 36, - 130, - 1, - 82, - 115, - 9, - 45, - 206, - 204, - 45, - 141, - 44, - 132, - 14, - 14, - 77, - 237, - 236, - 196, - 13, - 140, - 173, - 204, - 238, - 141, - 96, - 99, - 27, - 96, - 68, - 130, - 1, - 82, - 96, - 100, - 1, - 97, 2, - 60, - 86, - 91, 96, - 0, - 130, - 81, - 17, - 97, - 5, - 139, - 87, + 32, + 1, 96, 64, 81, - 98, - 70, - 27, - 205, + 144, + 129, + 1, 96, - 229, - 27, + 64, + 82, + 128, + 146, + 145, + 144, + 129, 129, 82, 96, 32, - 96, - 4, - 130, 1, - 82, - 96, - 37, - 96, - 36, 130, - 1, - 82, - 127, - 67, - 114, - 121, - 112, - 116, - 111, - 99, - 117, - 114, - 114, - 101, - 110, - 99, - 105, - 101, - 115, - 32, - 108, - 105, - 115, - 116, - 32, - 99, + 128, + 84, + 97, + 14, + 76, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 14, + 153, + 87, + 128, + 96, + 31, + 16, + 97, + 14, + 110, + 87, 97, - 110, - 110, - 111, - 116, - 32, - 98, - 101, - 32, - 96, - 68, - 130, - 1, - 82, - 100, - 101, - 109, - 112, - 116, - 121, - 96, - 216, - 27, - 96, - 100, - 130, 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, 82, + 145, 96, - 132, + 32, 1, + 145, 97, - 2, - 60, + 14, + 153, 86, 91, - 96, - 64, - 128, - 81, - 96, - 1, - 128, 130, - 82, - 129, - 131, 1, + 145, 144, - 146, - 82, 96, 0, - 145, + 82, 96, 32, - 128, - 131, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, 1, 144, + 96, + 32, + 1, 128, - 54, 131, - 55, - 1, + 17, + 97, + 14, + 124, + 87, + 130, 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, 80, 80, - 144, 80, + 80, + 144, + 128, 96, + 2, 1, - 129, - 96, - 0, - 129, - 81, - 129, - 16, - 97, - 5, - 194, - 87, + 128, + 84, 97, - 5, - 194, + 14, + 174, + 144, 97, - 22, - 32, + 26, + 223, 86, 91, + 128, 96, - 32, - 144, - 129, - 2, - 145, - 144, - 145, - 1, + 31, 1, - 82, 96, + 32, + 128, + 145, + 4, 2, - 84, + 96, + 32, + 1, 96, 64, 81, - 99, - 175, - 131, - 161, - 141, - 96, - 224, - 27, + 144, 129, - 82, - 96, - 1, - 96, 1, 96, - 160, - 27, - 3, - 127, - 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, - 0, - 0, - 129, - 22, - 146, - 99, - 175, - 131, - 161, - 141, - 146, - 97, - 6, - 36, + 64, + 82, + 128, 146, 145, 144, - 145, - 22, - 144, - 136, - 144, - 134, - 144, + 129, + 129, + 82, 96, - 4, + 32, 1, + 130, + 128, + 84, 97, - 22, - 112, + 14, + 218, + 144, + 97, + 26, + 223, 86, 91, - 96, - 32, - 96, - 64, - 81, - 128, - 131, - 3, - 129, - 134, - 90, - 250, - 21, 128, 21, 97, - 6, - 65, + 15, + 39, 87, - 61, - 96, - 0, 128, - 62, - 61, - 96, - 0, - 253, - 91, - 80, - 80, - 80, - 80, - 96, - 64, - 81, - 61, 96, 31, - 25, - 96, - 31, - 130, - 1, - 22, - 130, + 16, + 97, + 14, + 252, + 87, + 97, 1, - 128, - 96, - 64, + 0, + 128, + 131, + 84, + 4, + 2, + 131, 82, - 80, - 129, + 145, + 96, + 32, 1, - 144, - 97, - 6, - 101, 145, - 144, 97, - 22, - 214, + 15, + 39, 86, 91, - 97, - 6, - 161, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, + 130, + 1, + 145, + 144, 96, - 229, - 27, - 129, + 0, 82, 96, 32, 96, - 4, - 130, - 1, + 0, + 32, + 144, + 91, + 129, + 84, + 129, 82, + 144, 96, - 13, - 96, - 36, - 130, 1, - 82, - 108, - 36, - 183, - 59, - 48, - 182, - 52, - 178, - 16, - 56, - 57, - 55, - 183, - 179, - 96, - 153, - 27, - 96, - 68, - 130, 1, - 82, + 144, 96, - 100, + 32, 1, - 97, - 2, - 60, - 86, - 91, - 96, - 0, + 128, 131, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, 17, - 21, 97, - 6, - 189, + 15, + 10, 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 144, + 128, + 96, + 3, + 1, + 128, + 84, 97, - 6, - 189, + 15, + 60, + 144, 97, - 17, - 161, + 26, + 223, 86, 91, - 96, - 64, - 81, - 144, - 128, - 130, - 82, 128, 96, + 31, + 1, + 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, - 130, + 96, + 64, + 81, + 144, + 129, 1, 96, 64, 82, 128, - 21, - 97, - 6, - 240, - 87, + 146, + 145, + 144, 129, - 96, - 32, - 1, - 91, - 96, - 96, 129, 82, 96, 32, 1, - 144, - 96, - 1, - 144, - 3, - 144, - 129, + 130, + 128, + 84, 97, - 6, - 219, - 87, + 15, + 104, 144, - 80, + 97, + 26, + 223, + 86, 91, - 80, - 144, - 80, - 96, - 0, - 132, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, + 128, 21, 97, - 7, 15, + 181, 87, + 128, + 96, + 31, + 16, 97, - 7, 15, + 138, + 87, 97, - 17, - 161, - 86, - 91, - 96, - 64, - 81, - 144, - 128, - 130, - 82, + 1, + 0, 128, - 96, - 32, + 131, + 84, + 4, 2, + 131, + 82, + 145, 96, 32, 1, + 145, + 97, + 15, + 181, + 86, + 91, 130, 1, + 145, + 144, 96, - 64, + 0, 82, - 128, - 21, - 97, - 7, - 66, - 87, - 129, 96, 32, - 1, + 96, + 0, + 32, + 144, 91, - 96, - 96, + 129, + 84, 129, 82, + 144, 96, - 32, + 1, 1, 144, 96, + 32, 1, - 144, - 3, - 144, - 129, + 128, + 131, + 17, 97, - 7, - 45, + 15, + 152, 87, + 130, 144, - 80, + 3, + 96, + 31, + 22, + 130, + 1, + 145, 91, 80, + 80, + 80, + 80, + 80, 144, 80, + 132, + 86, + 91, + 97, + 15, + 199, + 97, + 18, + 217, + 86, + 91, 96, 0, 91, - 133, + 129, 81, 129, 16, 21, 97, - 8, - 109, + 18, + 37, 87, - 133, - 129, + 96, + 0, + 130, + 130, 129, 81, 129, 16, 97, - 7, - 99, + 15, + 231, 87, 97, - 7, - 99, + 15, + 231, 97, - 22, - 32, + 25, + 109, 86, 91, 96, @@ -2532,60 +6810,70 @@ pub mod summa { 1, 81, 96, - 32, + 0, 1, 81, + 96, + 64, 81, 96, - 0, - 20, - 21, - 128, - 21, + 32, + 1, 97, - 7, - 159, - 87, - 80, - 133, - 129, - 129, - 81, - 129, 16, + 3, + 145, + 144, 97, - 7, - 141, - 87, - 97, - 7, - 141, - 97, - 22, - 32, + 28, + 230, 86, 91, 96, - 32, - 2, + 64, + 128, + 81, 96, - 32, - 1, + 31, + 25, + 129, + 132, + 3, 1, + 129, + 82, + 145, + 129, + 82, + 129, 81, 96, - 0, + 32, + 146, + 131, 1, - 81, - 81, + 32, 96, 0, - 20, + 129, + 129, + 82, + 96, + 6, + 144, + 147, + 82, + 145, + 32, + 84, + 144, + 145, + 80, + 128, 21, - 91, 97, - 7, - 228, + 16, + 121, 87, 96, 64, @@ -2607,267 +6895,147 @@ pub mod summa { 1, 82, 96, - 22, + 24, 96, 36, 130, 1, 82, - 117, - 73, - 110, - 118, - 97, - 108, - 105, + 127, + 65, 100, - 32, - 99, - 114, - 121, - 112, - 116, - 111, - 99, - 117, - 114, - 114, - 101, - 110, - 99, - 121, - 96, - 80, - 27, - 96, - 68, - 130, - 1, - 82, - 96, 100, - 1, - 97, - 2, - 60, - 86, - 91, - 133, - 129, - 129, - 81, - 129, - 16, - 97, - 7, - 246, - 87, - 97, - 7, - 246, - 97, - 22, - 32, - 86, - 91, - 96, - 32, - 2, - 96, - 32, - 1, - 1, - 81, - 96, - 0, - 1, - 81, - 131, - 130, - 129, - 81, - 129, - 16, - 97, - 8, - 20, - 87, - 97, - 8, - 20, - 97, - 22, - 32, - 86, - 91, - 96, - 32, - 2, - 96, - 32, - 1, - 1, - 129, - 144, - 82, - 80, - 133, - 129, - 129, - 81, - 129, - 16, - 97, - 8, - 49, - 87, + 114, + 101, + 115, + 115, + 32, 97, - 8, - 49, + 108, + 114, + 101, 97, - 22, - 32, - 86, - 91, - 96, + 100, + 121, 32, - 2, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, - 32, - 1, + 68, + 130, 1, - 81, + 82, 96, - 32, + 100, 1, - 81, - 130, - 130, + 97, + 2, + 68, + 86, + 91, + 96, + 4, + 132, + 132, 129, 81, 129, 16, 97, - 8, - 79, + 16, + 141, 87, 97, - 8, - 79, + 16, + 141, 97, - 22, - 32, + 25, + 109, 86, 91, 96, 32, - 2, - 96, - 32, - 1, - 1, - 129, 144, - 82, - 80, - 128, - 128, - 97, - 8, - 101, + 129, + 2, + 145, 144, - 97, - 22, - 248, - 86, - 91, 145, - 80, - 80, - 97, - 7, - 72, - 86, - 91, - 80, - 96, - 64, - 128, - 81, - 96, - 96, + 1, 129, 1, + 81, 130, - 82, - 135, - 129, - 82, + 84, 96, - 32, - 128, - 130, 1, - 133, - 144, - 82, 129, - 131, 1, 132, - 144, - 82, + 85, 96, 0, - 135, - 129, - 82, - 96, - 4, - 144, - 145, + 147, + 132, 82, 145, 144, - 145, + 146, 32, - 129, + 130, 81, + 96, + 4, + 144, + 146, + 2, + 1, + 144, 129, 144, 97, - 8, - 165, + 16, + 191, 144, 130, 97, - 23, - 96, + 29, + 2, 86, 91, 80, 96, 32, 130, - 129, 1, 81, - 128, - 81, - 97, - 8, - 190, - 146, 96, 1, - 133, - 1, - 146, + 130, 1, 144, 97, - 15, - 246, + 16, + 212, + 144, + 130, + 97, + 29, + 2, 86, 91, 80, @@ -2876,2240 +7044,2314 @@ pub mod summa { 130, 1, 81, - 128, - 81, - 97, - 8, - 218, - 145, 96, 2, - 132, + 130, 1, - 145, - 96, - 32, 144, - 145, - 1, + 97, + 16, + 233, 144, + 130, 97, - 15, - 246, + 29, + 2, 86, 91, 80, - 144, - 80, - 80, - 131, - 127, - 43, - 22, - 129, - 62, - 43, - 166, - 199, - 89, - 231, - 241, - 158, - 154, - 138, - 233, - 241, - 141, - 195, - 3, - 229, - 184, - 110, - 235, - 199, - 122, - 141, - 92, - 134, - 157, - 117, - 234, - 253, - 210, - 135, - 135, 96, - 64, + 96, + 130, + 1, 81, + 96, + 3, + 130, + 1, + 144, 97, - 9, 16, - 146, - 145, + 254, 144, + 130, 97, - 24, - 32, + 29, + 2, 86, 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 162, - 80, - 80, - 80, 80, - 80, - 80, - 86, - 91, + 80, 96, 4, - 96, - 32, - 82, + 84, 96, 0, - 144, + 132, 129, 82, 96, + 6, + 96, + 32, + 82, + 96, 64, 144, 32, - 128, - 84, - 129, + 85, + 80, + 131, + 81, + 132, 144, - 97, - 9, - 59, + 132, 144, + 129, + 16, 97, - 22, - 54, + 17, + 39, + 87, + 97, + 17, + 39, + 97, + 25, + 109, 86, 91, - 128, - 96, - 31, - 1, 96, 32, - 128, - 145, - 4, 2, 96, 32, 1, - 96, - 64, + 1, 81, - 144, - 129, + 96, + 0, 1, + 81, + 81, 96, - 64, - 82, + 0, + 20, + 21, 128, - 146, - 145, - 144, + 21, + 97, + 17, + 99, + 87, + 80, + 131, + 131, 129, + 81, 129, - 82, + 16, + 97, + 17, + 81, + 87, + 97, + 17, + 81, + 97, + 25, + 109, + 86, + 91, + 96, + 32, + 2, 96, 32, 1, - 130, + 1, + 81, + 96, + 32, + 1, + 81, + 81, + 96, + 0, + 20, + 21, + 91, 128, - 84, + 21, 97, - 9, - 103, - 144, + 17, + 142, + 87, + 80, + 131, + 131, + 129, + 81, + 129, + 16, 97, - 22, - 54, + 17, + 124, + 87, + 97, + 17, + 124, + 97, + 25, + 109, 86, 91, + 96, + 32, + 2, + 96, + 32, + 1, + 1, + 81, + 96, + 64, + 1, + 81, + 81, + 96, + 0, + 20, + 21, + 91, 128, 21, 97, - 9, - 180, + 17, + 185, 87, - 128, - 96, - 31, + 80, + 131, + 131, + 129, + 81, + 129, 16, 97, - 9, - 137, + 17, + 167, 87, 97, + 17, + 167, + 97, + 25, + 109, + 86, + 91, + 96, + 32, + 2, + 96, + 32, + 1, + 1, + 81, + 96, + 96, 1, + 81, + 81, + 96, 0, - 128, - 131, - 84, - 4, - 2, - 131, + 20, + 21, + 91, + 97, + 18, + 16, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, 82, - 145, 96, 32, + 96, + 4, + 130, 1, - 145, + 82, + 96, + 34, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, 97, - 9, - 180, - 86, - 91, + 108, + 105, + 100, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 111, + 102, + 32, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 111, + 119, + 110, + 101, + 114, + 115, + 104, + 96, + 68, 130, 1, - 145, - 144, - 96, - 0, 82, + 97, + 6, + 151, 96, - 32, - 96, - 0, - 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, + 244, + 27, 96, + 100, + 130, 1, - 1, - 144, + 82, 96, - 32, + 132, 1, - 128, - 131, - 17, 97, - 9, - 151, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, + 2, + 68, + 86, 91, 80, 80, + 128, + 128, + 97, + 18, + 29, + 144, + 97, + 28, + 131, + 86, + 91, + 145, 80, 80, + 97, + 15, + 202, + 86, + 91, 80, - 144, + 127, + 56, + 35, + 21, + 212, + 213, + 106, + 96, + 53, + 225, + 137, + 155, + 255, + 231, + 125, + 155, + 236, + 239, + 175, + 95, + 38, 80, + 228, + 50, + 59, + 39, + 133, + 72, + 87, + 160, + 69, + 70, + 88, 129, - 86, - 91, + 96, + 64, + 81, 97, - 9, - 198, + 18, + 85, + 145, + 144, 97, - 15, - 76, + 29, + 194, 86, 91, - 97, - 9, - 208, 96, - 0, - 97, - 15, - 166, + 64, + 81, + 128, + 145, + 3, + 144, + 161, + 80, 86, 91, + 97, + 18, + 104, + 97, + 18, + 217, 86, 91, 96, + 1, + 96, + 1, + 96, + 160, + 27, 3, 129, - 129, - 84, - 129, - 16, + 22, 97, - 9, - 226, + 18, + 205, 87, 96, - 0, - 128, - 253, - 91, - 144, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 0, + 229, + 27, + 129, 82, 96, 32, 96, - 0, - 32, - 144, - 96, 4, - 2, + 130, 1, + 82, 96, - 0, - 145, - 80, - 144, - 80, - 128, + 38, 96, - 0, + 36, + 130, 1, - 128, - 84, + 82, + 127, + 79, + 119, + 110, 97, - 10, - 5, - 144, + 98, + 108, + 101, + 58, + 32, + 110, + 101, + 119, + 32, + 111, + 119, + 110, + 101, + 114, + 32, + 105, + 115, + 32, + 116, + 104, + 101, + 32, + 122, + 101, + 114, + 111, + 32, 97, - 22, - 54, - 86, - 91, - 128, 96, - 31, + 68, + 130, 1, + 82, + 101, + 100, + 100, + 114, + 101, + 115, + 115, 96, - 32, - 128, - 145, - 4, - 2, - 96, - 32, - 1, + 208, + 27, 96, - 64, - 81, - 144, - 129, + 100, + 130, 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, 82, 96, - 32, + 132, 1, - 130, - 128, - 84, - 97, - 10, - 49, - 144, 97, - 22, - 54, + 2, + 68, 86, 91, - 128, - 21, - 97, - 10, - 126, - 87, - 128, - 96, - 31, - 16, 97, - 10, - 83, - 87, + 18, + 214, + 129, 97, - 1, + 19, + 51, + 86, + 91, + 80, + 86, + 91, + 96, 0, - 128, - 131, 84, - 4, - 2, - 131, - 82, - 145, 96, - 32, 1, - 145, - 97, - 10, - 126, - 86, - 91, - 130, + 96, 1, - 145, - 144, 96, - 0, - 82, + 160, + 27, + 3, + 22, + 51, + 20, + 97, + 10, + 31, + 87, 96, - 32, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 0, - 32, - 144, - 91, - 129, - 84, + 229, + 27, 129, 82, - 144, 96, + 32, + 96, + 4, + 130, 1, - 1, + 129, 144, + 82, 96, - 32, + 36, + 130, 1, - 128, - 131, - 17, + 82, + 127, + 79, + 119, + 110, 97, - 10, + 98, + 108, + 101, + 58, + 32, + 99, 97, - 87, - 130, - 144, - 3, + 108, + 108, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 116, + 104, + 101, + 32, + 111, + 119, + 110, + 101, + 114, 96, - 31, - 22, + 68, 130, 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 144, - 128, + 82, 96, + 100, 1, - 1, - 128, - 84, - 97, - 10, - 147, - 144, 97, - 22, - 54, + 2, + 68, 86, 91, + 96, + 0, 128, + 84, 96, - 31, 1, 96, - 32, - 128, - 145, - 4, - 2, - 96, - 32, 1, 96, - 64, - 81, - 144, + 160, + 27, + 3, + 131, 129, + 22, + 96, 1, 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, + 1, + 96, + 160, + 27, + 3, + 25, + 131, + 22, 129, - 82, + 23, + 132, + 85, 96, - 32, - 1, - 130, - 128, - 84, - 97, - 10, - 191, + 64, + 81, + 145, 144, - 97, + 146, 22, - 54, - 86, - 91, - 128, - 21, - 97, - 11, - 12, + 146, + 131, + 145, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, + 100, 87, + 224, + 145, + 144, + 163, + 80, + 80, + 86, + 91, + 96, + 0, 128, + 131, 96, 31, - 16, + 132, + 1, + 18, 97, - 10, - 225, + 19, + 149, 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, 97, - 1, + 19, + 173, + 87, + 96, 0, 128, + 253, + 91, + 96, + 32, 131, - 84, - 4, - 2, - 131, - 82, + 1, 145, + 80, + 131, 96, 32, + 130, + 133, 1, - 145, + 1, + 17, + 21, 97, - 11, - 12, - 86, + 19, + 197, + 87, + 96, + 0, + 128, + 253, 91, - 130, - 1, - 145, + 146, + 80, + 146, 144, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, 96, 0, 82, 96, - 32, + 65, + 96, + 4, + 82, + 96, + 36, 96, 0, - 32, - 144, + 253, 91, - 129, - 84, - 129, - 82, - 144, 96, - 1, - 1, - 144, + 64, + 81, 96, - 32, - 1, 128, - 131, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, 17, - 97, - 10, - 239, - 87, 130, - 144, - 3, - 96, - 31, - 22, 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 144, - 128, - 96, - 2, - 1, - 128, - 84, + 16, + 23, + 21, 97, - 11, - 33, - 144, + 20, + 5, + 87, 97, - 22, - 54, + 20, + 5, + 97, + 19, + 204, 86, 91, - 128, 96, - 31, - 1, + 64, + 82, + 144, + 86, + 91, 96, - 32, - 128, - 145, - 4, - 2, + 64, + 81, 96, - 32, + 31, + 130, 1, 96, - 64, - 81, - 144, + 31, + 25, + 22, 129, 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, + 97, + 20, + 52, + 87, + 97, + 20, + 52, + 97, + 19, + 204, + 86, + 91, 96, 64, 82, - 128, - 146, 145, 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, - 84, - 97, - 11, - 77, - 144, - 97, - 22, - 54, + 80, 86, 91, - 128, - 21, - 97, - 11, - 154, - 87, - 128, 96, - 31, - 16, + 0, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 130, + 17, + 21, 97, - 11, - 111, + 20, + 86, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 20, + 86, 97, - 11, - 154, + 19, + 204, 86, 91, - 130, + 80, + 96, + 5, + 27, + 96, + 32, 1, - 145, 144, + 86, + 91, 96, 0, - 82, + 130, 96, - 32, + 31, + 131, + 1, + 18, + 97, + 20, + 113, + 87, 96, 0, - 32, - 144, + 128, + 253, 91, 129, - 84, - 129, - 82, - 144, - 96, - 1, - 1, - 144, + 53, 96, 32, - 1, - 128, + 97, + 20, + 134, + 97, + 20, + 129, 131, - 17, 97, - 11, - 125, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, + 20, + 60, + 86, 91, - 80, - 80, - 80, - 80, - 80, - 144, - 128, - 96, - 3, - 1, - 128, - 84, 97, + 20, 11, - 175, - 144, - 97, - 22, - 54, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, - 96, - 32, - 1, + 130, + 129, + 82, 96, - 64, - 81, + 5, + 146, 144, + 146, + 27, + 132, + 1, 129, 1, - 96, - 64, - 82, - 128, - 146, 145, - 144, 129, 129, - 82, - 96, - 32, 1, - 130, - 128, - 84, - 97, - 11, - 219, 144, - 97, - 22, - 54, - 86, - 91, - 128, + 134, + 132, + 17, 21, 97, - 12, - 40, + 20, + 165, 87, - 128, 96, - 31, + 0, + 128, + 253, + 91, + 130, + 134, + 1, + 91, + 132, + 129, 16, + 21, 97, - 11, - 253, + 20, + 192, 87, - 97, - 1, - 0, 128, - 131, - 84, - 4, - 2, + 53, 131, 82, 145, - 96, - 32, + 131, 1, 145, + 131, + 1, 97, - 12, - 40, + 20, + 169, + 86, + 91, + 80, + 150, + 149, + 80, + 80, + 80, + 80, + 80, + 80, 86, 91, - 130, - 1, - 145, - 144, 96, 0, - 82, + 128, 96, - 32, + 0, + 128, 96, 0, - 32, - 144, + 128, + 96, + 128, + 135, + 137, + 3, + 18, + 21, + 97, + 20, + 228, + 87, + 96, + 0, + 128, + 253, 91, - 129, - 84, - 129, - 82, - 144, + 134, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 20, + 252, + 87, 96, + 0, + 128, + 253, + 91, + 97, + 21, + 8, + 138, + 131, + 139, 1, - 1, + 97, + 19, + 131, + 86, + 91, 144, + 152, + 80, + 150, + 80, 96, 32, + 137, 1, + 53, + 145, + 80, 128, - 131, + 130, 17, + 21, 97, - 12, - 11, + 21, + 33, 87, - 130, - 144, - 3, 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 144, - 80, - 132, - 86, + 0, + 128, + 253, 91, 97, - 12, - 58, + 21, + 45, + 138, + 131, + 139, + 1, 97, - 15, - 76, + 19, + 131, 86, 91, + 144, + 150, + 80, + 148, + 80, 96, - 0, - 91, - 129, - 81, - 129, - 16, + 64, + 137, + 1, + 53, + 145, + 80, + 128, + 130, + 17, 21, 97, - 14, - 152, + 21, + 70, 87, 96, 0, - 130, - 130, - 129, - 81, - 129, - 16, - 97, - 12, - 90, - 87, + 128, + 253, + 91, + 80, 97, - 12, - 90, + 21, + 83, + 137, + 130, + 138, + 1, 97, - 22, - 32, + 20, + 96, 86, 91, + 146, + 80, + 80, 96, - 32, - 2, - 96, - 32, - 1, - 1, - 81, - 96, - 0, - 1, - 81, - 96, - 64, - 81, 96, - 32, + 135, 1, - 97, - 12, - 118, - 145, + 53, 144, - 97, - 24, - 181, + 80, + 146, + 149, + 80, + 146, + 149, + 80, + 146, + 149, 86, 91, 96, - 64, - 128, - 81, + 0, 96, - 31, - 25, - 129, + 32, + 130, 132, 3, - 1, - 129, - 82, - 145, - 129, - 82, - 129, - 81, - 96, - 32, - 146, - 131, - 1, - 32, + 18, + 21, + 97, + 21, + 121, + 87, 96, 0, - 129, - 129, - 82, - 96, - 5, - 144, - 147, - 82, + 128, + 253, + 91, + 80, + 53, 145, - 32, - 84, 144, - 145, 80, - 128, + 86, + 91, + 96, + 0, + 91, + 131, + 129, + 16, 21, 97, - 12, - 236, + 21, + 155, 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, 129, - 82, - 96, - 32, - 96, - 4, - 130, + 129, 1, - 82, - 96, - 24, - 96, - 36, + 81, + 131, 130, 1, 82, - 127, - 65, - 100, - 100, - 114, - 101, - 115, - 115, + 96, 32, + 1, 97, - 108, - 114, - 101, - 97, - 100, - 121, - 32, - 118, - 101, - 114, - 105, - 102, - 105, - 101, - 100, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 21, + 131, + 86, + 91, + 80, + 80, 96, - 68, - 130, + 0, + 145, 1, 82, - 96, - 100, - 1, - 97, - 2, - 60, 86, 91, 96, - 3, - 132, - 132, + 0, 129, 81, - 129, - 16, - 97, - 13, - 0, - 87, - 97, - 13, - 0, + 128, + 132, + 82, 97, - 22, + 21, + 188, + 129, + 96, 32, - 86, - 91, + 134, + 1, 96, 32, - 144, - 129, - 2, - 145, - 144, - 145, + 134, 1, - 129, + 97, + 21, + 128, + 86, + 91, + 96, + 31, 1, - 81, - 130, - 84, 96, + 31, + 25, + 22, + 146, + 144, + 146, 1, - 129, + 96, + 32, 1, - 132, - 85, + 146, + 145, + 80, + 80, + 86, + 91, 96, 0, - 147, + 129, + 81, + 96, + 128, 132, 82, - 145, - 144, - 146, - 32, - 130, - 81, + 97, + 21, + 229, 96, - 4, - 144, - 146, - 2, + 128, + 133, 1, - 144, - 129, - 144, - 97, - 13, - 50, - 144, 130, 97, - 23, - 96, + 21, + 164, 86, 91, + 144, 80, 96, 32, - 130, + 131, 1, 81, - 96, - 1, + 132, 130, + 3, + 96, + 32, + 134, 1, - 144, + 82, 97, - 13, - 71, - 144, + 21, + 254, + 130, 130, 97, - 23, - 96, + 21, + 164, 86, 91, + 145, + 80, 80, 96, 64, - 130, + 131, 1, 81, - 96, - 2, + 132, 130, + 3, + 96, + 64, + 134, 1, - 144, + 82, 97, - 13, - 92, - 144, + 22, + 24, + 130, 130, 97, - 23, - 96, + 21, + 164, 86, 91, + 145, + 80, 80, 96, 96, - 130, + 131, 1, 81, - 96, - 3, + 132, 130, + 3, + 96, + 96, + 134, 1, - 144, + 82, 97, - 13, - 113, - 144, + 22, + 50, + 130, 130, 97, - 23, - 96, + 21, + 164, 86, 91, + 149, + 148, 80, 80, + 80, + 80, + 80, + 86, + 91, 96, - 3, - 84, - 96, - 0, - 132, + 32, 129, 82, 96, - 5, - 96, - 32, - 82, + 0, + 97, + 22, + 78, 96, - 64, - 144, 32, - 85, - 80, 131, - 81, - 132, - 144, + 1, 132, - 144, - 129, - 16, - 97, - 13, - 154, - 87, - 97, - 13, - 154, 97, - 22, - 32, + 21, + 208, + 86, + 91, + 147, + 146, + 80, + 80, + 80, 86, 91, 96, 32, - 2, - 96, - 32, - 1, - 1, - 81, - 96, - 0, - 1, - 81, - 81, - 96, - 0, - 20, - 21, - 128, - 21, - 97, - 13, - 214, - 87, - 80, - 131, - 131, 129, - 81, - 129, - 16, - 97, - 13, - 196, - 87, - 97, - 13, - 196, + 82, + 96, + 0, 97, 22, + 78, + 96, 32, + 131, + 1, + 132, + 97, + 21, + 164, 86, 91, 96, - 32, - 2, - 96, - 32, - 1, - 1, - 81, + 0, + 130, 96, - 32, + 31, + 131, 1, - 81, - 81, + 18, + 97, + 22, + 121, + 87, 96, 0, - 20, - 21, - 91, 128, - 21, - 97, - 14, - 1, - 87, - 80, - 131, - 131, + 253, + 91, 129, - 81, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 129, - 16, + 17, + 21, 97, - 13, - 239, + 22, + 147, 87, 97, - 13, - 239, - 97, 22, - 32, + 147, + 97, + 19, + 204, 86, 91, + 97, + 22, + 166, 96, - 32, - 2, - 96, - 32, - 1, + 31, + 130, 1, - 81, 96, - 64, - 1, - 81, - 81, + 31, + 25, + 22, 96, - 0, + 32, + 1, + 97, 20, - 21, + 11, + 86, 91, - 128, - 21, - 97, - 14, - 44, - 87, - 80, - 131, - 131, 129, - 81, 129, - 16, - 97, - 14, - 26, - 87, - 97, - 14, - 26, - 97, - 22, - 32, - 86, - 91, - 96, - 32, - 2, + 82, + 132, 96, 32, + 131, + 134, 1, 1, - 81, - 96, - 96, - 1, - 81, - 81, - 96, - 0, - 20, + 17, 21, - 91, 97, - 14, - 131, + 22, + 187, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, + 0, + 128, + 253, + 91, 129, - 82, 96, 32, - 96, - 4, - 130, + 133, 1, - 82, 96, - 34, + 32, + 131, + 1, + 55, 96, - 36, - 130, + 0, + 145, + 129, 1, - 82, - 127, - 73, - 110, - 118, - 97, - 108, - 105, - 100, - 32, - 112, - 114, - 111, - 111, - 102, - 32, - 111, - 102, - 32, - 97, - 100, - 100, - 114, - 101, - 115, - 115, - 32, - 111, - 119, - 110, - 101, - 114, - 115, - 104, 96, - 68, - 130, + 32, 1, + 145, + 144, + 145, 82, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 128, + 133, + 135, + 3, + 18, + 21, 97, - 6, - 151, + 22, + 238, + 87, 96, - 244, - 27, + 0, + 128, + 253, + 91, + 132, + 53, + 147, + 80, 96, - 100, + 32, + 133, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, 130, - 1, - 82, + 17, + 21, + 97, + 23, + 13, + 87, 96, - 132, + 0, + 128, + 253, + 91, + 97, + 23, + 25, + 136, + 131, + 137, 1, 97, - 2, - 60, + 22, + 104, 86, 91, + 148, 80, + 96, + 64, + 135, + 1, + 53, + 145, 80, 128, - 128, - 97, - 14, - 144, - 144, + 130, + 17, + 21, 97, - 22, - 248, - 86, + 23, + 47, + 87, + 96, + 0, + 128, + 253, 91, - 145, - 80, - 80, 97, - 12, - 61, + 23, + 59, + 136, + 131, + 137, + 1, + 97, + 20, + 96, 86, 91, + 147, 80, - 127, - 56, - 35, - 21, - 212, - 213, - 106, 96, + 96, + 135, + 1, 53, - 225, - 137, - 155, - 255, - 231, - 125, - 155, - 236, - 239, - 175, - 95, - 38, + 145, 80, - 228, - 50, - 59, - 39, - 133, - 72, + 128, + 130, + 17, + 21, + 97, + 23, + 81, 87, - 160, - 69, - 70, - 88, - 129, 96, - 64, - 81, + 0, + 128, + 253, + 91, + 80, 97, - 14, - 200, - 145, - 144, + 23, + 94, + 135, + 130, + 136, + 1, 97, - 24, - 209, + 20, + 96, 86, 91, - 96, - 64, - 81, - 128, 145, - 3, - 144, - 161, + 80, + 80, + 146, + 149, + 145, + 148, + 80, + 146, 80, 86, 91, - 97, - 14, - 219, - 97, - 15, - 76, - 86, - 91, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 129, - 22, - 97, - 15, - 64, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, 96, - 229, - 27, + 128, 129, 82, 96, - 32, + 0, + 97, + 23, + 125, 96, - 4, - 130, + 128, + 131, 1, - 82, - 96, - 38, - 96, - 36, + 135, + 97, + 21, + 164, + 86, + 91, 130, + 129, + 3, + 96, + 32, + 132, 1, 82, - 127, - 79, - 119, - 110, 97, - 98, - 108, - 101, - 58, - 32, - 110, - 101, - 119, - 32, - 111, - 119, - 110, - 101, - 114, - 32, - 105, - 115, - 32, - 116, - 104, - 101, - 32, - 122, - 101, - 114, - 111, - 32, + 23, + 143, + 129, + 135, 97, - 96, - 68, - 130, - 1, - 82, - 101, - 100, - 100, - 114, - 101, - 115, - 115, - 96, - 208, - 27, - 96, - 100, + 21, + 164, + 86, + 91, + 144, + 80, 130, - 1, - 82, + 129, + 3, 96, + 64, 132, 1, + 82, 97, - 2, - 60, - 86, - 91, - 97, - 15, - 73, + 23, + 163, 129, + 134, 97, - 15, - 166, + 21, + 164, 86, 91, + 144, 80, - 86, - 91, + 130, + 129, + 3, 96, - 0, - 84, 96, + 132, 1, + 82, + 97, + 13, + 84, + 129, + 133, + 97, + 21, + 164, + 86, + 91, 96, - 1, + 0, 96, - 160, - 27, + 32, + 128, + 131, + 133, 3, - 22, - 51, - 20, + 18, + 21, 97, - 9, - 208, + 23, + 202, 87, 96, - 64, - 81, - 98, - 70, - 27, - 205, + 0, + 128, + 253, + 91, + 130, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 23, + 226, + 87, 96, - 229, - 27, + 0, + 128, + 253, + 91, 129, - 82, - 96, - 32, - 96, - 4, - 130, + 133, 1, - 129, - 144, - 82, + 145, + 80, + 133, 96, - 36, - 130, + 31, + 131, 1, - 82, - 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, - 32, - 99, + 18, 97, - 108, - 108, - 101, - 114, - 32, - 105, - 115, - 32, - 110, - 111, - 116, - 32, - 116, - 104, - 101, - 32, - 111, - 119, - 110, - 101, - 114, + 23, + 246, + 87, 96, - 68, + 0, + 128, + 253, + 91, + 129, + 53, + 97, + 24, + 4, + 97, + 20, + 129, 130, - 1, - 82, - 96, - 100, - 1, 97, - 2, + 20, 60, 86, 91, + 129, + 129, + 82, 96, - 0, - 128, - 84, - 96, - 1, - 96, - 1, - 96, - 160, + 5, + 145, + 144, + 145, 27, - 3, 131, - 129, - 22, - 96, 1, - 96, + 132, 1, - 96, - 160, - 27, - 3, - 25, - 131, - 22, - 129, - 23, + 144, 132, - 85, - 96, - 64, - 81, - 145, + 129, + 1, 144, - 146, - 22, - 146, + 136, 131, - 145, - 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, - 20, - 19, - 68, - 205, - 31, - 208, - 164, - 242, - 132, - 25, - 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, + 17, + 21, + 97, 24, - 111, - 107, - 100, + 35, 87, - 224, - 145, - 144, - 163, - 80, - 80, - 86, + 96, + 0, + 128, + 253, + 91, + 133, + 133, + 1, 91, - 130, + 131, + 129, + 16, + 21, + 97, + 25, + 4, + 87, 128, - 84, - 130, - 130, - 85, - 144, + 53, + 133, + 129, + 17, + 21, + 97, + 24, + 62, + 87, 96, 0, - 82, - 96, - 32, + 128, + 253, + 91, + 134, + 1, 96, - 0, - 32, - 144, + 128, 129, + 140, + 3, + 96, + 31, + 25, 1, - 146, - 130, + 18, 21, 97, - 16, - 60, + 24, + 85, 87, - 145, 96, - 32, - 2, - 130, - 1, + 0, + 128, + 129, + 253, + 91, + 97, + 24, + 93, + 97, + 19, + 226, + 86, 91, + 136, 130, + 1, + 53, + 135, 129, 17, 21, 97, - 16, - 60, + 24, + 111, 87, - 130, - 81, - 130, - 144, + 96, + 0, + 128, + 129, + 253, + 91, 97, - 16, - 44, - 144, - 130, + 24, + 125, + 141, + 139, + 131, + 134, + 1, + 1, 97, - 23, - 96, + 22, + 104, 86, 91, + 130, + 82, 80, - 145, 96, - 32, + 64, + 128, + 131, 1, - 145, - 144, + 53, + 136, + 129, + 17, + 21, + 97, + 24, + 148, + 87, 96, + 0, + 128, + 129, + 253, + 91, + 97, + 24, + 162, + 142, + 140, + 131, + 135, 1, 1, - 144, 97, - 16, 22, + 104, 86, 91, + 139, + 132, + 1, + 82, 80, + 96, + 96, + 128, + 132, + 1, + 53, + 137, + 129, + 17, + 21, 97, - 16, - 72, - 146, - 145, - 80, + 24, + 187, + 87, + 96, + 0, + 128, + 129, + 253, + 91, 97, - 16, - 76, + 24, + 201, + 143, + 141, + 131, + 136, + 1, + 1, + 97, + 22, + 104, 86, 91, + 131, + 133, + 1, + 82, 80, - 144, - 86, - 91, + 96, 128, + 132, + 1, + 53, + 145, + 80, + 136, 130, 17, 21, 97, - 16, - 72, + 24, + 227, 87, 96, 0, + 128, + 129, + 253, + 91, 97, - 16, - 96, - 130, - 130, + 24, + 241, + 142, + 140, + 132, + 135, + 1, + 1, 97, - 16, - 105, + 22, + 104, 86, 91, + 144, + 131, + 1, + 82, 80, - 96, + 132, + 82, + 80, + 145, + 134, 1, + 145, + 134, 1, 97, - 16, - 76, + 24, + 39, 86, 91, 80, - 128, - 84, - 97, - 16, - 117, - 144, - 97, - 22, - 54, - 86, - 91, - 96, - 0, - 130, - 85, - 128, - 96, - 31, - 16, - 97, - 16, - 133, - 87, + 152, + 151, + 80, + 80, + 80, + 80, + 80, + 80, 80, 80, 86, 91, 96, - 31, - 1, - 96, - 32, - 144, - 4, - 144, - 96, 0, - 82, - 96, - 32, 96, - 0, 32, - 144, - 129, - 1, - 144, - 97, - 15, - 73, - 145, - 144, - 91, - 128, 130, - 17, + 132, + 3, + 18, 21, 97, - 16, - 72, + 25, + 35, 87, 96, 0, + 128, + 253, + 91, 129, - 85, + 53, 96, 1, - 1, - 97, - 16, - 159, - 86, - 91, 96, - 0, + 1, 96, - 32, - 130, - 132, + 160, + 27, 3, - 18, - 21, + 129, + 22, + 129, + 20, 97, - 16, - 197, + 22, + 78, 87, 96, 0, 128, 253, 91, - 80, - 53, - 145, - 144, - 80, - 86, - 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, 96, 0, - 91, - 131, - 129, - 16, - 21, - 97, - 16, - 231, - 87, - 129, - 129, - 1, - 81, - 131, - 130, - 1, 82, 96, - 32, - 1, - 97, - 16, - 207, - 86, - 91, - 80, - 80, + 17, 96, - 0, - 145, - 1, + 4, 82, - 86, - 91, + 96, + 36, 96, 0, - 129, - 81, + 253, + 91, 128, + 130, + 2, + 129, + 21, + 130, + 130, + 4, 132, - 82, + 20, + 23, 97, - 17, - 8, - 129, - 96, - 32, - 134, - 1, - 96, - 32, - 134, - 1, + 25, + 103, + 87, 97, - 16, - 204, + 25, + 103, + 97, + 25, + 58, 86, 91, - 96, - 31, - 1, - 96, - 31, - 25, - 22, - 146, - 144, - 146, - 1, - 96, - 32, - 1, 146, 145, 80, 80, 86, 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, 96, 0, - 129, - 81, + 82, 96, - 128, - 132, + 50, + 96, + 4, 82, - 97, - 17, - 49, 96, - 128, - 133, - 1, - 130, - 97, - 16, - 240, - 86, + 36, + 96, + 0, + 253, 91, - 144, - 80, + 129, + 131, + 82, + 129, + 129, 96, 32, - 131, + 133, 1, - 81, - 132, + 55, + 80, + 96, + 0, 130, - 3, + 130, + 1, 96, 32, - 134, + 144, + 129, 1, - 82, - 97, - 17, - 74, - 130, - 130, - 97, - 16, - 240, - 86, - 91, 145, - 80, - 80, + 144, + 145, + 82, 96, - 64, - 131, + 31, + 144, + 145, 1, - 81, - 132, - 130, - 3, 96, - 64, - 134, + 31, + 25, + 22, + 144, + 145, 1, - 82, - 97, - 17, - 100, - 130, - 130, - 97, - 16, - 240, + 1, + 144, 86, 91, - 145, - 80, - 80, - 96, 96, - 131, - 1, + 0, + 129, 81, + 128, 132, - 130, - 3, - 96, + 82, 96, - 134, + 32, + 128, + 133, 1, - 82, + 148, + 80, + 128, + 132, + 1, + 96, + 0, + 91, + 131, + 129, + 16, + 21, 97, - 17, - 126, + 25, + 220, + 87, + 129, + 81, + 135, + 82, + 149, 130, + 1, + 149, + 144, 130, + 1, + 144, + 96, + 1, + 1, 97, - 16, - 240, + 25, + 192, 86, 91, + 80, + 148, 149, 148, 80, @@ -5120,349 +9362,390 @@ pub mod summa { 86, 91, 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 133, + 22, + 129, + 82, + 96, + 96, + 96, 32, + 130, + 1, 129, + 144, 82, 96, 0, + 144, 97, - 17, - 154, - 96, - 32, + 26, + 12, + 144, 131, 1, - 132, + 133, + 135, 97, - 17, - 28, + 25, + 131, 86, 91, - 147, - 146, - 80, - 80, - 80, + 130, + 129, + 3, + 96, + 64, + 132, + 1, + 82, + 97, + 13, + 84, + 129, + 133, + 97, + 25, + 172, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, 96, 0, - 82, - 96, - 65, - 96, - 4, - 82, 96, - 36, + 32, + 130, + 132, + 3, + 18, + 21, + 97, + 26, + 48, + 87, 96, 0, + 128, 253, 91, - 96, - 64, - 128, - 81, - 144, 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 81, + 128, + 21, + 21, 129, - 17, + 20, + 97, + 22, + 78, + 87, + 96, + 0, + 128, + 253, + 91, + 128, 130, + 1, + 128, 130, - 16, - 23, + 17, 21, 97, - 17, - 218, + 25, + 103, 87, 97, - 17, - 218, + 25, + 103, 97, - 17, - 161, - 86, - 91, - 96, - 64, - 82, - 144, + 25, + 58, 86, 91, 96, - 64, - 81, - 96, + 0, 128, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, + 133, + 133, 17, - 130, - 130, - 16, - 23, 21, 97, - 17, - 218, + 26, + 99, 87, - 97, + 96, + 0, + 128, + 253, + 91, + 131, + 134, 17, - 218, + 21, 97, - 17, - 161, + 26, + 112, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 80, + 130, + 1, + 147, + 145, + 144, + 146, + 3, + 145, + 80, + 86, + 91, + 131, + 133, + 130, + 55, + 96, + 0, + 132, + 130, + 1, + 96, + 0, + 129, + 82, + 131, + 133, + 130, + 55, + 96, + 0, + 147, + 1, + 146, + 131, + 82, + 80, + 144, + 148, + 147, + 80, + 80, + 80, + 80, 86, 91, 96, - 64, - 81, + 1, 96, - 31, - 130, 1, 96, - 31, - 25, + 160, + 27, + 3, + 132, 22, 129, + 82, + 96, + 96, + 96, + 32, + 130, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 18, - 44, - 87, + 144, + 82, + 96, + 0, + 144, 97, - 18, - 44, + 26, + 195, + 144, + 131, + 1, + 133, 97, - 17, - 161, + 21, + 164, 86, 91, + 130, + 129, + 3, 96, 64, + 132, + 1, 82, - 145, - 144, + 97, + 26, + 213, + 129, + 133, + 97, + 25, + 172, + 86, + 91, + 150, + 149, + 80, + 80, + 80, + 80, + 80, 80, 86, 91, 96, - 0, - 130, - 96, - 31, - 131, 1, - 18, - 97, - 18, - 69, - 87, - 96, - 0, - 128, - 253, - 91, 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 21, + 28, + 144, + 130, + 22, + 128, 97, - 18, - 95, + 26, + 243, 87, - 97, - 18, - 95, - 97, - 17, - 161, - 86, - 91, - 97, - 18, - 114, 96, - 31, + 127, 130, - 1, - 96, - 31, - 25, 22, + 145, + 80, + 91, 96, 32, - 1, - 97, - 18, + 130, + 16, + 129, 3, + 97, + 27, + 19, + 87, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 34, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 80, + 145, + 144, + 80, 86, 91, - 129, - 129, - 82, - 132, 96, - 32, - 131, - 134, - 1, - 1, + 31, + 130, 17, 21, 97, - 18, - 135, + 27, + 99, 87, 96, 0, - 128, - 253, - 91, 129, + 129, + 82, 96, 32, - 133, - 1, - 96, + 129, 32, - 131, + 96, + 31, + 133, 1, - 55, 96, - 0, - 145, + 5, + 28, 129, 1, 96, 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 130, - 17, + 134, + 16, 21, 97, - 18, - 190, + 27, + 64, 87, - 97, - 18, - 190, - 97, - 17, - 161, - 86, - 91, 80, + 128, + 91, 96, - 5, - 27, + 31, + 133, + 1, 96, - 32, + 5, + 28, + 130, 1, - 144, - 86, + 145, + 80, 91, - 96, - 0, - 128, - 96, - 0, - 96, - 96, - 132, - 134, - 3, - 18, + 129, + 129, + 16, 21, 97, - 18, - 221, + 27, + 95, 87, + 130, + 129, + 85, 96, - 0, - 128, - 253, + 1, + 1, + 97, + 27, + 76, + 86, + 91, + 80, + 80, + 80, + 91, + 80, + 80, + 80, + 86, 91, - 131, - 53, 103, 255, 255, @@ -5472,347 +9755,341 @@ pub mod summa { 255, 255, 255, - 128, - 130, + 131, 17, 21, 97, - 18, - 245, + 27, + 128, 87, - 96, - 0, + 97, + 27, 128, - 253, - 91, 97, 19, - 1, - 135, + 204, + 86, + 91, + 97, + 27, + 148, 131, - 136, - 1, 97, - 18, - 52, + 27, + 142, + 131, + 84, + 97, + 26, + 223, 86, 91, - 148, - 80, - 96, - 32, - 145, - 80, - 129, - 134, - 1, - 53, - 129, - 129, - 17, - 21, + 131, 97, - 19, - 24, - 87, + 27, + 25, + 86, + 91, 96, 0, - 128, - 253, - 91, - 134, - 1, 96, 31, - 129, + 132, + 17, + 96, 1, - 136, - 19, + 129, + 20, 97, - 19, - 41, + 27, + 200, 87, 96, 0, - 128, - 253, - 91, - 128, - 53, - 97, - 19, - 60, + 133, + 21, 97, - 19, - 55, + 27, + 176, + 87, + 80, + 131, 130, - 97, - 18, - 164, - 86, - 91, - 97, - 18, - 3, - 86, + 1, + 53, 91, - 129, - 129, - 82, 96, - 5, - 145, + 0, + 25, + 96, + 3, + 135, 144, - 145, 27, - 130, - 1, - 132, - 1, - 144, - 132, - 129, + 28, + 25, + 22, + 96, 1, + 134, 144, - 138, + 27, + 23, 131, - 17, - 21, + 85, 97, - 19, + 28, + 34, + 86, 91, - 87, 96, 0, - 128, - 253, - 91, - 133, - 132, - 1, - 91, 131, 129, - 16, - 21, - 97, - 19, - 236, - 87, - 128, - 53, - 134, - 129, - 17, - 21, - 97, - 19, - 118, - 87, - 96, - 0, - 128, - 253, - 91, - 133, - 1, + 82, 96, - 64, - 129, - 142, - 3, + 32, + 144, + 32, 96, 31, 25, - 1, - 18, + 134, + 22, + 144, + 131, + 91, + 130, + 129, + 16, 21, 97, - 19, - 141, + 27, + 249, 87, + 134, + 133, + 1, + 53, + 130, + 85, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 19, - 149, + 32, + 148, + 133, + 1, + 148, + 96, + 1, + 144, + 146, + 1, + 145, + 1, 97, - 17, - 183, + 27, + 217, 86, 91, - 136, + 80, + 134, 130, - 1, - 53, - 136, - 129, - 17, + 16, 21, 97, - 19, - 167, + 28, + 22, 87, 96, 0, - 128, + 25, + 96, + 248, + 136, + 96, + 3, + 27, + 22, + 28, + 25, + 132, + 135, + 1, + 53, + 22, 129, - 253, + 85, 91, - 97, - 19, - 181, - 143, - 139, - 131, - 134, + 80, + 80, + 96, + 1, + 133, + 96, 1, + 27, 1, - 97, - 18, - 52, - 86, + 131, + 85, 91, - 130, - 82, 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, 96, - 64, - 130, - 1, - 53, - 136, 129, - 17, - 21, - 97, - 19, - 203, - 87, + 82, 96, 0, - 128, - 129, - 253, - 91, 97, - 19, - 217, - 143, - 139, + 28, + 60, + 96, + 96, 131, - 134, - 1, 1, + 136, 97, - 18, - 52, + 25, + 172, 86, 91, 130, - 139, + 129, + 3, + 96, + 32, + 132, 1, 82, + 97, + 28, + 79, + 129, + 135, + 137, + 97, + 25, + 131, + 86, + 91, + 144, 80, + 130, + 129, + 3, + 96, + 64, 132, - 82, - 80, - 145, - 134, - 1, - 145, - 134, 1, + 82, 97, - 19, - 95, + 28, + 100, + 129, + 133, + 135, + 97, + 25, + 131, 86, 91, - 80, - 151, - 154, + 152, 151, - 153, 80, 80, 80, 80, - 96, - 64, - 149, - 144, - 149, - 1, - 53, - 148, 80, 80, 80, 80, 86, 91, - 96, - 32, 129, - 82, - 96, - 0, - 97, + 129, + 3, + 129, + 129, 17, - 154, - 96, - 32, - 131, - 1, - 132, + 21, 97, - 16, - 240, + 25, + 103, + 87, + 97, + 25, + 103, + 97, + 25, + 58, 86, 91, 96, - 128, - 129, - 82, - 96, 0, - 97, - 20, - 41, 96, - 128, - 131, 1, - 135, + 130, + 1, 97, - 16, - 240, + 28, + 149, + 87, + 97, + 28, + 149, + 97, + 25, + 58, 86, 91, - 130, - 129, + 80, + 96, + 1, + 1, + 144, + 86, + 91, + 96, + 1, + 96, + 1, + 96, + 160, + 27, 3, + 133, + 22, + 129, + 82, + 96, + 128, 96, 32, - 132, + 130, 1, + 129, + 144, 82, + 96, + 0, + 144, 97, - 20, - 59, - 129, - 135, + 28, + 192, + 144, + 131, + 1, + 134, 97, - 16, - 240, + 21, + 164, 86, - 91, - 144, - 80, + 91, 130, 129, 3, @@ -5822,13 +10099,13 @@ pub mod summa { 1, 82, 97, - 20, - 79, + 28, + 210, 129, 134, 97, - 16, - 240, + 25, + 172, 86, 91, 144, @@ -5842,47 +10119,45 @@ pub mod summa { 1, 82, 97, - 20, - 99, + 13, + 84, 129, 133, 97, - 16, - 240, - 86, - 91, - 151, - 150, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 25, + 172, 86, 91, 96, 0, - 96, - 32, - 128, - 131, - 133, - 3, - 18, - 21, + 130, + 81, 97, - 20, + 28, + 248, 129, - 87, + 132, 96, - 0, + 32, + 135, + 1, + 97, + 21, 128, - 253, + 86, 91, - 130, - 53, + 145, + 144, + 145, + 1, + 146, + 145, + 80, + 80, + 86, + 91, + 129, + 81, 103, 255, 255, @@ -5892,1712 +10167,1980 @@ pub mod summa { 255, 255, 255, - 128, - 130, + 129, 17, 21, 97, - 20, - 153, + 29, + 28, 87, - 96, - 0, - 128, - 253, + 97, + 29, + 28, + 97, + 19, + 204, + 86, 91, + 97, + 29, + 48, 129, - 133, - 1, - 145, - 80, - 133, + 97, + 29, + 42, + 132, + 84, + 97, + 26, + 223, + 86, + 91, + 132, + 97, + 27, + 25, + 86, + 91, + 96, + 32, + 128, 96, 31, 131, + 17, + 96, 1, - 18, - 97, + 129, 20, - 173, + 97, + 29, + 101, 87, 96, 0, - 128, - 253, - 91, - 129, - 53, - 97, - 20, - 187, + 132, + 21, 97, - 19, - 55, - 130, + 29, + 77, + 87, + 80, + 133, + 131, + 1, + 81, + 91, + 96, + 0, + 25, + 96, + 3, + 134, + 144, + 27, + 28, + 25, + 22, + 96, + 1, + 133, + 144, + 27, + 23, + 133, + 85, 97, - 18, - 164, + 27, + 95, 86, 91, - 129, + 96, + 0, + 133, 129, 82, 96, - 5, - 145, - 144, + 32, + 129, + 32, + 96, + 31, + 25, + 134, + 22, 145, - 27, - 131, + 91, + 130, + 129, + 16, + 21, + 97, + 29, + 148, + 87, + 136, + 134, 1, + 81, + 130, + 85, + 148, 132, 1, + 148, + 96, + 1, 144, - 132, - 129, + 145, 1, 144, - 136, - 131, - 17, + 132, + 1, + 97, + 29, + 117, + 86, + 91, + 80, + 133, + 130, + 16, 21, 97, - 20, - 218, + 29, + 178, 87, + 135, + 133, + 1, + 81, + 96, + 0, + 25, + 96, + 3, + 136, + 144, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 129, + 85, + 91, + 80, + 80, + 80, + 80, + 80, + 96, + 1, + 144, + 129, + 27, + 1, + 144, + 85, + 80, + 86, + 91, 96, 0, + 96, + 32, 128, - 253, - 91, - 133, - 133, - 1, - 91, 131, + 1, 129, - 16, - 21, - 97, - 21, - 187, - 87, + 132, + 82, 128, - 53, 133, - 129, - 17, - 21, - 97, - 20, - 245, - 87, - 96, - 0, + 81, 128, - 253, - 91, + 131, + 82, + 96, + 64, 134, 1, + 145, + 80, 96, - 128, + 64, 129, - 140, - 3, 96, - 31, - 25, + 5, + 27, + 135, + 1, + 1, + 146, + 80, + 131, + 135, 1, - 18, - 21, - 97, - 21, - 12, - 87, 96, 0, - 128, - 129, - 253, - 91, - 97, - 21, - 20, - 97, - 17, - 224, - 86, 91, - 136, 130, - 1, - 53, - 135, 129, - 17, + 16, 21, 97, - 21, - 38, + 30, + 23, 87, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 21, - 52, - 141, - 139, - 131, + 63, + 25, + 136, 134, + 3, 1, - 1, + 132, + 82, 97, - 18, - 52, + 30, + 5, + 133, + 131, + 81, + 97, + 21, + 208, 86, 91, - 130, - 82, + 148, 80, - 96, - 64, - 128, - 131, + 146, + 133, 1, - 53, - 136, - 129, - 17, - 21, - 97, - 21, - 75, - 87, + 146, + 144, + 133, + 1, + 144, 96, - 0, - 128, - 129, - 253, - 91, - 97, - 21, - 89, - 142, - 140, - 131, - 135, 1, 1, 97, - 18, - 52, + 29, + 233, 86, 91, - 139, - 132, - 1, - 82, 80, + 146, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 134, + 176, + 92, + 129, + 176, + 246, + 11, + 26, + 49, + 238, + 104, + 196, + 221, + 82, + 171, + 23, + 219, + 113, + 171, + 244, + 157, + 67, + 134, + 216, + 115, + 248, + 142, + 231, + 228, + 146, + 232, + 106, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static SUMMA_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ 96, + 128, 96, + 64, + 82, + 52, 128, - 132, - 1, - 53, - 137, - 129, - 17, 21, 97, - 21, - 114, + 0, + 16, 87, 96, 0, 128, - 129, 253, 91, - 97, - 21, - 128, - 143, - 141, - 131, - 136, - 1, - 1, - 97, - 18, - 52, - 86, - 91, - 131, - 133, - 1, - 82, 80, 96, + 4, + 54, + 16, + 97, + 0, + 169, + 87, + 96, + 0, + 53, + 96, + 224, + 28, 128, - 132, - 1, - 53, - 145, + 99, + 121, 80, - 136, - 130, + 197, + 248, 17, - 21, 97, - 21, - 154, - 87, - 96, 0, + 113, + 87, 128, - 129, - 253, - 91, + 99, + 121, + 80, + 197, + 248, + 20, 97, - 21, - 168, - 142, - 140, - 132, - 135, 1, - 1, - 97, - 18, - 52, - 86, + 51, + 87, + 128, + 99, + 141, + 165, + 203, 91, - 144, - 131, - 1, - 82, - 80, - 132, - 82, - 80, - 145, - 134, + 20, + 97, 1, - 145, - 134, + 114, + 87, + 128, + 99, + 156, + 56, + 37, + 89, + 20, + 97, 1, + 131, + 87, + 128, + 99, + 163, + 196, + 188, + 248, + 20, 97, + 1, + 166, + 87, + 128, + 99, + 199, + 221, + 202, + 14, 20, - 222, - 86, - 91, - 80, - 152, - 151, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 96, - 32, - 130, - 132, - 3, - 18, - 21, 97, - 21, - 218, + 1, + 201, 87, - 96, - 0, 128, + 99, + 242, 253, - 91, - 129, - 53, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 129, - 22, - 129, + 227, + 139, 20, 97, - 17, - 154, + 1, + 220, 87, 96, 0, 128, 253, 91, + 128, 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 17, - 96, - 4, - 82, - 96, - 36, + 5, + 171, + 152, 96, - 0, - 253, - 91, - 129, - 129, - 3, - 129, - 129, - 17, - 21, + 20, 97, - 22, - 26, + 0, + 174, 87, - 97, - 22, - 26, - 97, - 21, - 241, - 86, - 91, - 146, - 145, - 80, - 80, - 86, - 91, + 128, 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 50, - 96, - 4, - 82, - 96, - 36, - 96, + 25, + 179, + 57, + 104, + 20, + 97, 0, - 253, - 91, - 96, - 1, - 129, - 129, - 28, - 144, - 130, - 22, + 195, + 87, 128, + 99, + 73, + 206, + 137, + 151, + 20, 97, - 22, - 74, + 0, + 236, 87, - 96, - 127, - 130, - 22, - 145, + 128, + 99, + 113, 80, - 91, - 96, - 32, - 130, - 16, - 129, - 3, + 24, + 166, + 20, 97, - 22, - 106, + 1, + 12, 87, + 128, 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 34, - 96, - 4, - 82, - 96, - 36, + 121, + 80, + 44, + 85, + 20, + 97, + 1, + 20, + 87, + 91, 96, 0, + 128, 253, 91, - 80, - 145, - 144, - 80, + 97, + 0, + 193, + 97, + 0, + 188, + 54, + 96, + 4, + 97, + 20, + 203, 86, 91, - 96, - 1, - 96, + 97, 1, + 239, + 86, + 91, + 0, + 91, + 97, + 0, + 214, + 97, + 0, + 209, + 54, 96, - 160, - 27, - 3, - 132, - 22, - 129, - 82, - 96, - 96, + 4, + 97, + 21, + 103, + 86, + 91, + 97, + 6, 96, - 32, - 128, - 131, - 1, - 130, - 144, - 82, + 86, + 91, 96, + 64, + 81, + 97, 0, + 227, 145, - 97, - 22, - 149, 144, - 132, - 1, - 134, 97, - 16, - 240, + 22, + 59, 86, 91, - 131, - 129, - 3, 96, 64, - 133, - 1, - 82, - 132, 81, 128, - 130, - 82, - 130, - 134, - 1, 145, - 131, - 1, + 3, 144, - 96, - 0, + 243, 91, - 129, - 129, - 16, + 97, + 0, + 255, + 97, + 0, + 250, + 54, + 96, + 4, + 97, 21, + 103, + 86, + 91, 97, - 22, - 200, - 87, - 131, + 9, + 115, + 86, + 91, + 96, + 64, 81, - 131, - 82, - 146, - 132, - 1, - 146, - 145, - 132, - 1, + 97, + 0, + 227, 145, - 96, - 1, - 1, + 144, 97, 22, - 172, + 85, 86, 91, - 80, - 144, - 152, - 151, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 97, + 0, + 193, + 97, + 10, + 13, 86, 91, 96, - 0, - 96, - 32, - 130, - 132, 3, - 18, - 21, + 84, 97, + 1, + 33, + 144, + 96, + 255, 22, - 232, - 87, + 129, + 86, + 91, + 96, + 64, + 81, + 96, + 255, + 144, + 145, + 22, + 129, + 82, 96, + 32, + 1, + 97, 0, - 128, - 253, + 227, + 86, 91, + 97, + 1, + 90, + 127, + 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, + 0, + 0, 129, + 86, + 91, + 96, + 64, 81, - 128, - 21, - 21, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 144, + 145, + 22, 129, - 20, - 97, - 17, - 154, - 87, + 82, 96, + 32, + 1, + 97, 0, - 128, - 253, + 227, + 86, 91, 96, 0, + 84, 96, 1, - 130, + 96, 1, + 96, + 160, + 27, + 3, + 22, 97, - 23, - 10, - 87, - 97, - 23, - 10, - 97, - 21, - 241, + 1, + 90, 86, 91, - 80, - 96, + 97, 1, + 150, + 97, 1, - 144, + 145, + 54, + 96, + 4, + 97, + 22, + 216, 86, 91, - 96, - 31, - 130, - 17, - 21, 97, - 23, + 10, + 33, + 86, 91, - 87, 96, - 0, - 129, + 64, + 81, + 144, + 21, + 21, 129, 82, 96, 32, - 129, - 32, - 96, - 31, - 133, 1, - 96, - 5, - 28, - 129, + 97, + 0, + 227, + 86, + 91, + 97, + 1, + 185, + 97, 1, + 180, + 54, 96, - 32, - 134, - 16, + 4, + 97, 21, + 103, + 86, + 91, 97, - 23, - 56, - 87, - 80, - 128, + 13, + 95, + 86, 91, 96, - 31, - 133, - 1, - 96, - 5, - 28, - 130, - 1, + 64, + 81, + 97, + 0, + 227, + 148, + 147, + 146, 145, - 80, - 91, - 129, - 129, - 16, - 21, + 144, 97, 23, - 87, - 87, - 130, - 129, - 85, - 96, - 1, + 106, + 86, + 91, + 97, + 0, + 193, + 97, 1, + 215, + 54, + 96, + 4, 97, 23, - 68, + 183, 86, 91, - 80, - 80, - 80, - 91, - 80, - 80, - 80, + 97, + 15, + 191, 86, 91, - 129, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, 97, - 23, - 122, - 87, + 0, + 193, 97, - 23, - 122, + 1, + 234, + 54, + 96, + 4, 97, + 25, 17, - 161, 86, 91, 97, - 23, - 142, + 18, + 96, + 86, + 91, + 97, + 1, + 247, + 97, + 18, + 217, + 86, + 91, + 96, + 0, + 130, + 81, + 17, + 97, + 2, + 77, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 29, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, 97, - 23, - 136, - 132, - 84, + 108, + 105, + 100, + 32, + 116, + 111, + 116, 97, - 22, - 54, - 86, - 91, - 132, + 108, + 32, + 98, 97, - 23, - 17, - 86, - 91, - 96, + 108, + 97, + 110, + 99, + 101, + 115, 32, - 128, - 96, - 31, - 131, - 17, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, 96, + 68, + 130, 1, - 129, - 20, - 97, - 23, - 195, - 87, + 82, 96, - 0, - 132, - 21, - 97, - 23, - 171, - 87, - 80, - 133, - 131, + 100, 1, - 81, 91, 96, - 0, - 25, - 96, + 64, + 81, + 128, + 145, 3, - 134, 144, - 27, - 28, - 25, - 22, - 96, - 1, - 133, + 253, + 91, + 129, + 81, + 97, + 2, + 90, 144, - 27, - 23, - 133, - 85, + 96, + 64, 97, - 23, - 87, + 25, + 80, 86, 91, + 131, + 20, + 97, + 2, + 168, + 87, 96, - 0, - 133, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, 82, 96, 32, - 129, - 32, 96, - 31, - 25, - 134, - 22, - 145, - 91, + 4, 130, - 129, - 16, - 21, - 97, - 23, - 242, - 87, - 136, - 134, 1, - 81, + 82, + 96, + 30, + 96, + 36, 130, - 85, - 148, - 132, 1, - 148, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 114, + 97, + 110, + 100, + 32, + 115, + 117, + 109, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, 96, + 68, + 130, 1, - 144, - 145, - 1, - 144, - 132, + 82, + 96, + 100, 1, 97, - 23, - 211, + 2, + 68, 86, 91, - 80, - 133, 130, - 16, - 21, + 133, + 17, 97, - 24, - 16, + 2, + 247, 87, - 135, - 133, - 1, - 81, 96, - 0, - 25, - 96, - 3, - 136, - 144, + 64, + 81, + 98, + 70, 27, + 205, 96, - 248, - 22, - 28, - 25, - 22, + 229, + 27, 129, - 85, - 91, - 80, - 80, - 80, - 80, - 80, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 26, + 96, + 36, + 130, + 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 115, + 110, + 97, + 114, + 107, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, + 0, + 0, + 0, 96, + 68, + 130, 1, - 144, - 129, - 27, + 82, + 96, + 100, 1, - 144, - 85, - 80, + 97, + 2, + 68, 86, 91, 96, - 0, - 96, 64, 128, - 131, + 81, + 96, + 1, + 128, + 130, 82, - 97, - 24, - 51, 129, - 132, + 131, 1, - 134, - 97, - 16, - 240, - 86, - 91, + 144, + 146, + 82, + 96, + 0, + 145, 96, 32, - 132, - 130, - 3, - 129, - 134, + 128, + 131, 1, - 82, - 129, - 134, - 81, + 144, 128, - 132, - 82, - 130, - 132, + 54, + 131, + 55, 1, - 145, + 144, + 80, + 80, + 144, 80, - 130, - 129, 96, - 5, - 27, - 133, - 1, - 1, - 131, - 137, 1, + 129, 96, 0, - 91, - 131, + 129, + 81, 129, 16, - 21, 97, - 24, - 165, - 87, - 134, - 131, 3, - 96, - 31, - 25, - 1, - 133, - 82, - 129, - 81, - 128, - 81, - 137, - 133, - 82, + 46, + 87, 97, - 24, - 121, - 138, - 134, - 1, - 130, + 3, + 46, 97, - 16, - 240, + 25, + 109, 86, 91, - 145, - 136, - 1, - 81, - 133, - 131, - 3, - 134, - 138, - 1, - 82, + 96, + 32, + 144, + 129, + 2, 145, 144, - 80, - 97, - 24, 145, - 129, - 131, - 97, - 16, - 240, - 86, - 91, - 150, - 136, 1, - 150, - 148, - 80, - 80, - 80, - 144, - 133, 1, - 144, + 82, + 96, + 64, + 81, + 99, + 175, + 131, + 161, + 141, + 96, + 224, + 27, + 129, + 82, 96, 1, + 96, 1, + 96, + 160, + 27, + 3, + 127, + 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, + 0, + 0, + 22, + 144, + 99, + 175, + 131, + 161, + 141, + 144, 97, - 24, - 85, - 86, - 91, - 80, + 3, + 171, 144, - 154, - 153, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 91, - 96, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, - 130, - 81, - 97, - 24, - 199, - 129, - 132, - 96, - 32, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 144, + 139, + 144, + 139, + 144, 135, - 1, - 97, - 16, - 204, - 86, - 91, - 145, 144, - 145, + 96, + 4, 1, - 146, - 145, - 80, - 80, + 97, + 25, + 231, 86, 91, 96, - 0, - 96, 32, + 96, + 64, + 81, 128, 131, - 1, + 3, 129, - 132, - 82, + 134, + 90, + 250, + 21, 128, - 133, - 81, + 21, + 97, + 3, + 200, + 87, + 61, + 96, + 0, 128, - 131, - 82, + 62, + 61, 96, - 64, - 134, - 1, - 145, + 0, + 253, + 91, + 80, + 80, + 80, 80, 96, 64, - 129, - 96, - 5, - 27, - 135, - 1, - 1, - 146, - 80, - 131, - 135, - 1, + 81, + 61, 96, - 0, - 91, - 130, - 129, - 16, - 21, - 97, + 31, 25, - 38, - 87, 96, - 63, - 25, - 136, - 134, - 3, + 31, + 130, 1, - 132, + 22, + 130, + 1, + 128, + 96, + 64, 82, - 97, - 25, - 20, - 133, - 131, - 81, - 97, - 17, - 28, - 86, - 91, - 148, 80, - 146, - 133, + 129, 1, - 146, 144, - 133, - 1, + 97, + 3, + 236, + 145, 144, - 96, - 1, - 1, 97, - 24, - 248, + 26, + 30, 86, 91, - 80, - 146, - 151, - 150, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 86, - 254, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 14, - 212, - 173, - 33, - 249, - 5, - 195, - 118, - 163, - 194, - 120, + 97, + 4, + 46, 87, - 244, - 94, - 231, - 128, - 9, - 167, - 245, - 111, - 232, - 20, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 19, + 96, + 36, + 130, + 1, + 82, + 114, + 36, + 183, + 59, + 48, + 182, + 52, + 178, + 16, + 57, + 183, + 48, 185, - 115, - 203, - 184, - 216, - 227, - 222, - 145, - 247, - 123, - 100, - 115, - 111, - 108, - 99, - 67, - 0, - 8, - 18, - 0, - 51, - ]; - ///The bytecode of the contract. - pub static SUMMA_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = &[ + 53, + 144, + 56, + 57, + 55, + 183, + 179, 96, - 128, + 105, + 27, 96, - 64, + 68, + 130, + 1, 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, 96, - 0, - 128, - 253, + 100, + 1, + 97, + 2, + 68, + 86, 91, - 80, 96, - 4, - 54, - 16, + 1, + 84, + 131, + 81, + 20, 97, - 0, - 158, + 4, + 166, 87, 96, - 0, - 53, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 224, - 28, - 128, - 99, - 125, - 220, - 144, - 125, - 17, - 97, - 0, - 102, - 87, - 128, - 99, - 125, - 220, - 144, - 125, - 20, - 97, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, 1, - 62, - 87, - 128, - 99, - 141, - 165, - 203, - 91, - 20, - 97, + 82, + 96, + 58, + 96, + 36, + 130, 1, + 82, + 127, + 76, 105, - 87, - 128, - 99, - 163, - 196, - 188, - 248, - 20, 97, - 1, - 122, - 87, - 128, + 98, + 105, + 108, + 105, + 116, + 121, + 32, 99, - 199, - 221, - 202, - 14, - 20, + 111, + 109, + 109, + 105, + 116, + 109, + 101, + 110, + 116, + 115, + 32, 97, + 110, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 96, + 68, + 130, 1, - 157, - 87, - 128, + 82, + 127, 99, - 242, - 253, - 227, - 139, - 20, + 117, + 114, + 114, + 101, + 110, + 99, + 105, + 101, + 115, + 32, + 110, + 117, + 109, + 98, + 101, + 114, + 32, + 109, + 105, + 115, + 109, 97, - 1, - 176, - 87, - 96, - 0, - 128, - 253, - 91, - 128, + 116, 99, - 25, - 179, - 57, 104, - 20, - 97, 0, - 163, - 87, - 128, - 99, - 67, - 249, - 236, - 7, - 20, - 97, 0, - 204, - 87, - 128, - 99, - 73, - 206, - 137, - 151, - 20, - 97, 0, - 225, - 87, - 128, - 99, - 113, - 80, - 24, - 166, - 20, - 97, + 0, + 0, + 0, + 96, + 100, + 130, 1, + 82, + 96, + 132, 1, - 87, - 128, - 99, - 121, - 80, - 44, - 85, - 20, 97, - 1, - 9, - 87, + 2, + 68, + 86, 91, + 54, 96, 0, - 128, - 253, - 91, + 136, + 129, + 137, + 97, + 4, + 183, + 137, + 96, + 64, 97, - 0, - 182, + 26, + 64, + 86, + 91, + 146, 97, - 0, - 177, - 54, - 96, 4, + 196, + 147, + 146, + 145, + 144, 97, - 16, - 179, + 26, + 83, 86, 91, + 144, + 146, + 80, + 144, + 80, + 96, + 0, + 135, + 135, 97, - 1, - 195, + 4, + 218, + 132, + 96, + 64, + 129, + 136, + 97, + 26, + 83, 86, 91, 96, 64, 81, + 96, + 32, + 1, 97, - 0, - 195, + 4, + 237, + 148, + 147, + 146, 145, 144, 97, - 17, - 135, + 26, + 125, 86, 91, 96, 64, - 81, 128, + 81, + 96, + 31, + 25, + 129, + 132, + 3, + 1, + 129, + 82, + 144, + 130, + 144, + 82, + 99, + 175, + 131, + 161, + 141, + 96, + 224, + 27, + 130, + 82, 145, + 80, + 96, + 1, + 96, + 1, + 96, + 160, + 27, 3, + 127, + 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, + 0, + 0, + 22, + 144, + 99, + 175, + 131, + 161, + 141, 144, - 243, - 91, 97, + 5, + 109, + 144, + 127, 0, - 223, - 97, 0, - 218, - 54, - 96, - 4, - 97, - 18, - 200, - 86, - 91, - 97, - 4, - 219, - 86, - 91, 0, - 91, - 97, 0, - 244, - 97, 0, - 239, - 54, + 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, + 144, + 133, + 144, + 139, + 144, 96, 4, + 1, 97, - 16, - 179, + 26, + 159, 86, 91, - 97, - 9, + 96, 32, - 86, - 91, 96, 64, 81, - 97, - 0, - 195, - 145, - 144, - 97, - 20, + 128, + 131, 3, - 86, - 91, - 97, - 0, - 223, + 129, + 134, + 90, + 250, + 21, + 128, + 21, 97, - 9, - 190, - 86, - 91, + 5, + 138, + 87, + 61, 96, - 1, - 84, - 97, - 1, - 34, - 144, - 97, - 255, - 255, - 129, - 22, - 144, - 98, - 1, - 0, 0, - 144, - 4, + 128, + 62, + 61, 96, - 255, - 22, - 130, - 86, + 0, + 253, 91, + 80, + 80, + 80, + 80, 96, 64, - 128, 81, - 97, - 255, - 255, - 144, - 147, - 22, - 131, - 82, + 61, 96, - 255, - 144, - 145, - 22, + 31, + 25, 96, - 32, - 131, + 31, + 130, + 1, + 22, + 130, 1, + 128, + 96, + 64, 82, + 80, + 129, 1, + 144, 97, - 0, - 195, + 5, + 174, + 145, + 144, + 97, + 26, + 30, 86, 91, - 96, - 2, - 84, 97, - 1, - 81, - 144, - 96, - 1, + 5, + 250, + 87, 96, - 1, + 64, + 81, + 98, + 70, + 27, + 205, 96, - 160, + 229, 27, - 3, - 22, 129, - 86, - 91, + 82, 96, - 64, - 81, + 32, 96, + 4, + 130, 1, + 82, + 96, + 23, 96, + 36, + 130, 1, + 82, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 114, + 97, + 110, + 100, + 32, + 115, + 117, + 109, + 32, + 112, + 114, + 111, + 111, + 102, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, - 160, - 27, - 3, - 144, - 145, - 22, - 129, + 68, + 130, + 1, 82, 96, - 32, + 100, 1, 97, - 0, - 195, + 2, + 68, 86, 91, 96, 0, - 84, + 133, + 129, + 82, 96, - 1, + 5, 96, - 1, + 32, + 82, 96, - 160, - 27, - 3, - 22, + 64, + 144, + 32, 97, - 1, - 81, + 6, + 19, + 131, + 133, + 131, + 97, + 27, + 104, 86, 91, - 97, - 1, - 141, - 97, - 1, + 80, + 132, + 127, + 118, + 3, + 161, + 42, 136, - 54, - 96, - 4, - 97, - 16, - 179, - 86, + 56, + 165, + 101, + 113, + 93, + 219, 91, - 97, - 9, - 210, - 86, + 191, + 98, 91, + 63, + 0, + 165, + 230, + 244, + 121, + 52, + 55, + 83, + 121, + 99, + 227, + 12, + 59, + 148, + 149, + 220, + 135, + 133, + 133, + 140, + 140, 96, 64, 81, 97, - 0, - 195, + 6, + 76, + 149, 148, 147, 146, 145, 144, 97, - 20, - 22, - 86, - 91, - 97, - 0, - 223, - 97, - 1, - 171, - 54, - 96, - 4, - 97, - 20, - 110, - 86, - 91, - 97, - 12, - 50, + 28, + 41, 86, 91, - 97, - 0, - 223, - 97, - 1, - 190, - 54, 96, - 4, - 97, - 21, - 200, - 86, - 91, - 97, - 14, - 211, + 64, + 81, + 128, + 145, + 3, + 144, + 162, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, 86, 91, 97, - 1, - 238, + 6, + 139, 96, 64, 81, @@ -7644,7 +12187,7 @@ pub mod summa { 129, 82, 96, - 5, + 6, 96, 32, 82, @@ -7654,8 +12197,8 @@ pub mod summa { 32, 84, 97, - 2, - 69, + 6, + 221, 87, 96, 64, @@ -7715,15 +12258,10 @@ pub mod summa { 96, 100, 1, - 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 253, + 97, + 2, + 68, + 86, 91, 96, 0, @@ -7731,7 +12269,7 @@ pub mod summa { 129, 82, 96, - 5, + 6, 96, 32, 82, @@ -7741,18 +12279,18 @@ pub mod summa { 32, 84, 96, - 3, + 4, 144, 97, - 2, - 99, + 6, + 251, 144, 96, 1, 144, 97, - 22, - 7, + 28, + 112, 86, 91, 129, @@ -7760,15 +12298,15 @@ pub mod summa { 129, 16, 97, - 2, - 115, + 7, + 11, 87, 97, - 2, - 115, + 7, + 11, 97, - 22, - 32, + 25, + 109, 86, 91, 144, @@ -7804,12 +12342,12 @@ pub mod summa { 128, 84, 97, - 2, - 156, + 7, + 52, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -7848,27 +12386,27 @@ pub mod summa { 128, 84, 97, - 2, - 200, + 7, + 96, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 3, - 21, + 7, + 173, 87, 128, 96, 31, 16, 97, - 2, - 234, + 7, + 130, 87, 97, 1, @@ -7886,8 +12424,8 @@ pub mod summa { 1, 145, 97, - 3, - 21, + 7, + 173, 86, 91, 130, @@ -7920,8 +12458,8 @@ pub mod summa { 131, 17, 97, - 2, - 248, + 7, + 144, 87, 130, 144, @@ -7950,12 +12488,12 @@ pub mod summa { 128, 84, 97, - 3, - 46, + 7, + 198, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -7994,27 +12532,27 @@ pub mod summa { 128, 84, 97, - 3, - 90, + 7, + 242, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 3, - 167, + 8, + 63, 87, 128, 96, 31, 16, 97, - 3, - 124, + 8, + 20, 87, 97, 1, @@ -8032,8 +12570,8 @@ pub mod summa { 1, 145, 97, - 3, - 167, + 8, + 63, 86, 91, 130, @@ -8066,8 +12604,154 @@ pub mod summa { 131, 17, 97, + 8, + 34, + 87, + 130, + 144, 3, - 138, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, + 2, + 130, + 1, + 128, + 84, + 97, + 8, + 88, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, + 129, + 129, + 82, + 96, + 32, + 1, + 130, + 128, + 84, + 97, + 8, + 132, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 8, + 209, + 87, + 128, + 96, + 31, + 16, + 97, + 8, + 166, + 87, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, + 97, + 8, + 209, + 86, + 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 8, + 180, 87, 130, 144, @@ -8090,18 +12774,18 @@ pub mod summa { 32, 1, 96, - 2, + 3, 130, 1, 128, 84, 97, - 3, - 192, + 8, + 234, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -8140,27 +12824,27 @@ pub mod summa { 128, 84, 97, - 3, - 236, + 9, + 22, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 4, - 57, + 9, + 99, 87, 128, 96, 31, 16, 97, - 4, - 14, + 9, + 56, 87, 97, 1, @@ -8178,8 +12862,8 @@ pub mod summa { 1, 145, 97, - 4, - 57, + 9, + 99, 86, 91, 130, @@ -8212,8 +12896,8 @@ pub mod summa { 131, 17, 97, - 4, - 28, + 9, + 70, 87, 130, 144, @@ -8232,22 +12916,38 @@ pub mod summa { 80, 129, 82, + 80, + 80, + 144, + 80, + 145, + 144, + 80, + 86, + 91, + 96, + 5, 96, 32, - 1, + 82, 96, - 3, - 130, - 1, + 0, + 144, + 129, + 82, + 96, + 64, + 144, + 32, 128, 84, 97, - 4, - 82, + 9, + 140, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -8286,27 +12986,27 @@ pub mod summa { 128, 84, 97, - 4, - 126, + 9, + 184, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 4, - 203, + 10, + 5, 87, 128, 96, 31, 16, 97, - 4, - 160, + 9, + 218, 87, 97, 1, @@ -8324,8 +13024,8 @@ pub mod summa { 1, 145, 97, - 4, - 203, + 10, + 5, 86, 91, 130, @@ -8358,8 +13058,8 @@ pub mod summa { 131, 17, 97, - 4, - 174, + 9, + 232, 87, 130, 144, @@ -8377,33 +13077,38 @@ pub mod summa { 80, 80, 129, - 82, - 80, - 80, - 144, - 80, - 145, - 144, - 80, 86, 91, 97, - 4, - 227, + 10, + 21, 97, - 15, - 76, + 18, + 217, 86, 91, - 130, - 81, 97, - 21, + 10, + 31, + 96, + 0, + 97, + 19, + 51, + 86, + 91, + 86, + 91, + 96, 0, + 130, + 81, + 96, + 4, 20, 97, - 5, - 44, + 10, + 116, 87, 96, 64, @@ -8425,36 +13130,45 @@ pub mod summa { 1, 82, 96, - 20, + 25, 96, 36, 130, 1, 82, - 115, - 9, - 45, - 206, - 204, - 45, - 141, - 44, - 132, - 14, - 14, - 77, - 237, - 236, - 196, - 13, - 140, - 173, - 204, - 238, - 141, - 96, + 127, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, 99, - 27, + 104, + 97, + 108, + 108, + 101, + 110, + 103, + 101, + 115, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, 68, 130, @@ -8465,17 +13179,30 @@ pub mod summa { 1, 97, 2, - 60, + 68, 86, 91, 96, - 0, - 130, + 1, + 128, + 84, + 131, 81, - 17, + 144, + 145, 97, - 5, - 139, + 10, + 133, + 145, + 97, + 28, + 112, + 86, + 91, + 20, + 97, + 10, + 221, 87, 96, 64, @@ -8497,58 +13224,55 @@ pub mod summa { 1, 82, 96, - 37, + 34, 96, 36, 130, 1, 82, 127, - 67, - 114, - 121, - 112, - 116, - 111, - 99, + 86, + 97, + 108, 117, - 114, - 114, - 101, - 110, - 99, - 105, 101, 115, 32, 108, - 105, - 115, + 101, + 110, + 103, 116, + 104, 32, - 99, + 109, + 105, + 115, + 109, 97, - 110, - 110, - 111, 116, + 99, + 104, 32, - 98, - 101, + 119, + 105, + 116, + 104, 32, + 99, + 111, + 110, + 102, 96, 68, 130, 1, 82, - 100, - 101, - 109, - 112, - 116, - 121, + 97, + 105, + 103, 96, - 216, + 240, 27, 96, 100, @@ -8560,291 +13284,178 @@ pub mod summa { 1, 97, 2, - 60, + 68, 86, 91, 96, - 64, - 128, - 81, - 96, - 1, - 128, - 130, - 82, + 0, + 133, 129, - 131, - 1, - 144, - 146, 82, 96, - 0, - 145, + 5, 96, 32, - 128, - 131, - 1, - 144, - 128, - 54, - 131, - 55, - 1, - 144, - 80, - 80, - 144, - 80, - 96, - 1, - 129, + 82, 96, - 0, - 129, - 81, + 64, 129, - 16, - 97, - 5, - 194, - 87, + 32, + 128, + 84, 97, - 5, - 194, + 10, + 246, + 144, 97, - 22, - 32, + 26, + 223, 86, 91, + 128, 96, - 32, - 144, - 129, - 2, - 145, - 144, - 145, - 1, + 31, 1, - 82, 96, + 32, + 128, + 145, + 4, 2, - 84, + 96, + 32, + 1, 96, 64, 81, - 99, - 175, - 131, - 161, - 141, - 96, - 224, - 27, + 144, 129, - 82, - 96, 1, 96, - 1, - 96, - 160, - 27, - 3, - 127, - 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, - 0, - 0, - 129, - 22, - 146, - 99, - 175, - 131, - 161, - 141, - 146, - 97, - 6, - 36, + 64, + 82, + 128, 146, 145, 144, - 145, - 22, - 144, - 136, - 144, - 134, - 144, + 129, + 129, + 82, 96, - 4, + 32, 1, + 130, + 128, + 84, 97, - 22, - 112, + 11, + 34, + 144, + 97, + 26, + 223, 86, 91, - 96, - 32, - 96, - 64, - 81, - 128, - 131, - 3, - 129, - 134, - 90, - 250, - 21, 128, 21, 97, - 6, - 65, + 11, + 111, 87, - 61, - 96, - 0, 128, - 62, - 61, - 96, - 0, - 253, - 91, - 80, - 80, - 80, - 80, - 96, - 64, - 81, - 61, - 96, - 31, - 25, 96, 31, - 130, - 1, - 22, - 130, - 1, - 128, - 96, - 64, - 82, - 80, - 129, - 1, - 144, - 97, - 6, - 101, - 145, - 144, - 97, - 22, - 214, - 86, - 91, + 16, 97, - 6, - 161, + 11, + 68, 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, + 97, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, 82, + 145, 96, 32, - 96, - 4, + 1, + 145, + 97, + 11, + 111, + 86, + 91, 130, 1, + 145, + 144, + 96, + 0, 82, 96, - 13, + 32, 96, - 36, - 130, - 1, + 0, + 32, + 144, + 91, + 129, + 84, + 129, 82, - 108, - 36, - 183, - 59, - 48, - 182, - 52, - 178, - 16, - 56, - 57, - 55, - 183, - 179, + 144, 96, - 153, - 27, + 1, + 1, + 144, 96, - 68, - 130, + 32, 1, + 128, + 131, + 17, + 97, + 11, 82, + 87, + 130, + 144, + 3, 96, - 100, + 31, + 22, + 130, 1, - 97, - 2, - 60, - 86, + 145, 91, + 80, + 80, + 80, + 80, + 80, + 144, + 80, 96, 0, - 131, + 133, + 81, + 130, 81, + 97, + 11, + 134, + 145, + 144, + 97, + 26, + 64, + 86, + 91, 103, 255, 255, @@ -8858,15 +13469,15 @@ pub mod summa { 17, 21, 97, - 6, - 189, + 11, + 158, 87, 97, - 6, - 189, + 11, + 158, 97, - 17, - 161, + 19, + 204, 86, 91, 96, @@ -8878,8 +13489,12 @@ pub mod summa { 82, 128, 96, - 32, - 2, + 31, + 1, + 96, + 31, + 25, + 22, 96, 32, 1, @@ -8891,33 +13506,20 @@ pub mod summa { 128, 21, 97, - 6, - 240, + 11, + 200, 87, - 129, 96, 32, + 130, 1, - 91, - 96, - 96, 129, - 82, - 96, - 32, - 1, - 144, - 96, + 128, + 54, + 131, + 55, 1, 144, - 3, - 144, - 129, - 97, - 6, - 219, - 87, - 144, 80, 91, 80, @@ -8925,586 +13527,741 @@ pub mod summa { 80, 96, 0, - 132, + 91, + 134, 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, + 16, 21, 97, - 7, - 15, + 12, + 47, + 87, + 134, + 129, + 129, + 81, + 129, + 16, + 97, + 11, + 233, 87, 97, - 7, - 15, + 11, + 233, 97, - 17, - 161, + 25, + 109, 86, 91, 96, - 64, - 81, - 144, - 128, - 130, - 82, - 128, - 96, - 32, - 2, - 96, 32, 1, - 130, 1, + 81, 96, - 64, - 82, - 128, - 21, + 248, + 28, + 96, + 248, + 27, + 130, + 130, + 129, + 81, + 129, + 16, 97, - 7, - 66, + 12, + 6, 87, - 129, - 96, - 32, - 1, + 97, + 12, + 6, + 97, + 25, + 109, + 86, 91, 96, - 96, - 129, - 82, - 96, 32, 1, + 1, 144, 96, 1, - 144, + 96, + 1, + 96, + 248, + 27, 3, + 25, + 22, 144, 129, - 97, - 7, - 45, - 87, + 96, + 0, + 26, 144, + 83, 80, + 128, + 97, + 12, + 39, + 129, + 97, + 28, + 131, + 86, 91, + 145, 80, - 144, + 80, + 97, + 11, + 206, + 86, + 91, 80, 96, 0, 91, - 133, + 130, 81, 129, 16, 21, 97, - 8, - 109, + 12, + 160, 87, - 133, + 130, 129, 129, 81, 129, 16, 97, - 7, - 99, + 12, + 78, 87, 97, - 7, - 99, + 12, + 78, 97, - 22, - 32, + 25, + 109, 86, 91, 96, 32, - 2, - 96, - 32, 1, 1, 81, 96, - 32, - 1, - 81, - 81, + 248, + 28, 96, - 0, - 20, - 21, - 128, - 21, + 248, + 27, + 130, + 136, + 81, + 131, 97, - 7, - 159, - 87, - 80, - 133, - 129, + 12, + 103, + 145, + 144, + 97, + 26, + 64, + 86, + 91, 129, 81, 129, 16, 97, - 7, - 141, + 12, + 119, 87, 97, - 7, - 141, + 12, + 119, 97, - 22, - 32, + 25, + 109, 86, 91, 96, 32, - 2, - 96, - 32, 1, 1, - 81, + 144, 96, - 0, 1, - 81, - 81, + 96, + 1, + 96, + 248, + 27, + 3, + 25, + 22, + 144, + 129, 96, 0, - 20, - 21, + 26, + 144, + 83, + 80, + 128, + 97, + 12, + 152, + 129, + 97, + 28, + 131, + 86, 91, + 145, + 80, + 80, 97, - 7, - 228, - 87, + 12, + 51, + 86, + 91, + 80, 96, 64, 81, - 98, - 70, - 27, - 205, + 99, + 35, + 251, + 90, + 213, 96, - 229, + 225, 27, 129, 82, 96, - 32, + 1, 96, - 4, - 130, 1, - 82, 96, + 160, + 27, + 3, + 127, + 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, + 0, + 0, 22, + 144, + 99, + 71, + 246, + 181, + 170, + 144, + 97, + 13, + 19, + 144, + 127, + 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, + 0, + 0, + 144, + 133, + 144, + 138, + 144, + 138, + 144, 96, - 36, - 130, + 4, 1, - 82, - 117, - 73, - 110, - 118, 97, - 108, - 105, - 100, + 28, + 156, + 86, + 91, + 96, 32, - 99, - 114, - 121, - 112, - 116, - 111, - 99, - 117, - 114, - 114, - 101, - 110, - 99, - 121, 96, + 64, + 81, + 128, + 131, + 3, + 129, + 134, + 90, + 250, + 21, + 128, + 21, + 97, + 13, + 48, + 87, + 61, + 96, + 0, + 128, + 62, + 61, + 96, + 0, + 253, + 91, + 80, + 80, + 80, 80, - 27, 96, - 68, + 64, + 81, + 61, + 96, + 31, + 25, + 96, + 31, 130, 1, - 82, + 22, + 130, + 1, + 128, 96, - 100, + 64, + 82, + 80, + 129, 1, + 144, 97, - 2, - 60, + 13, + 84, + 145, + 144, + 97, + 26, + 30, 86, 91, - 133, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 4, 129, 129, - 81, + 84, 129, 16, 97, - 7, - 246, + 13, + 111, 87, - 97, - 7, - 246, - 97, - 22, - 32, - 86, + 96, + 0, + 128, + 253, 91, + 144, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, + 144, + 96, + 4, + 2, 1, - 1, - 81, + 96, + 0, + 145, + 80, + 144, + 80, + 128, 96, 0, 1, - 81, - 131, - 130, - 129, - 81, - 129, - 16, - 97, - 8, - 20, - 87, + 128, + 84, 97, - 8, - 20, + 13, + 146, + 144, 97, - 22, - 32, + 26, + 223, 86, 91, + 128, + 96, + 31, + 1, 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, - 1, - 129, + 96, + 64, + 81, 144, - 82, - 80, - 133, 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, 129, - 81, 129, - 16, + 82, + 96, + 32, + 1, + 130, + 128, + 84, 97, - 8, - 49, + 13, + 190, + 144, + 97, + 26, + 223, + 86, + 91, + 128, + 21, + 97, + 14, + 11, 87, + 128, + 96, + 31, + 16, 97, - 8, - 49, + 13, + 224, + 87, 97, - 22, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, 32, + 1, + 145, + 97, + 14, + 11, 86, 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, 1, 1, - 81, + 144, 96, 32, 1, - 81, - 130, - 130, - 129, - 81, - 129, - 16, + 128, + 131, + 17, 97, - 8, - 79, + 13, + 238, 87, - 97, - 8, - 79, - 97, + 130, + 144, + 3, + 96, + 31, 22, - 32, - 86, + 130, + 1, + 145, 91, + 80, + 80, + 80, + 80, + 80, + 144, + 128, 96, - 32, - 2, - 96, - 32, 1, 1, - 129, - 144, - 82, - 80, - 128, 128, + 84, 97, - 8, - 101, + 14, + 32, 144, 97, - 22, - 248, - 86, - 91, - 145, - 80, - 80, - 97, - 7, - 72, + 26, + 223, 86, 91, - 80, - 96, - 64, 128, - 81, 96, - 96, - 129, + 31, 1, - 130, - 82, - 135, - 129, - 82, 96, 32, 128, - 130, + 145, + 4, + 2, + 96, + 32, 1, - 133, + 96, + 64, + 81, 144, - 82, 129, - 131, 1, - 132, - 144, - 82, - 96, - 0, - 135, - 129, - 82, 96, - 4, - 144, - 145, + 64, 82, + 128, + 146, 145, 144, - 145, - 32, 129, - 81, 129, - 144, + 82, + 96, + 32, + 1, + 130, + 128, + 84, 97, - 8, - 165, + 14, + 76, 144, - 130, 97, - 23, - 96, + 26, + 223, 86, 91, - 80, - 96, - 32, - 130, - 129, - 1, - 81, 128, - 81, + 21, 97, - 8, - 190, - 146, + 14, + 153, + 87, + 128, 96, + 31, + 16, + 97, + 14, + 110, + 87, + 97, 1, - 133, - 1, - 146, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, 1, - 144, + 145, 97, - 15, - 246, + 14, + 153, 86, 91, - 80, - 96, - 64, 130, 1, - 81, - 128, - 81, - 97, - 8, - 218, 145, + 144, 96, - 2, - 132, - 1, - 145, + 0, + 82, + 96, + 32, 96, + 0, 32, 144, - 145, + 91, + 129, + 84, + 129, + 82, + 144, + 96, + 1, 1, 144, + 96, + 32, + 1, + 128, + 131, + 17, 97, - 15, - 246, - 86, - 91, - 80, + 14, + 124, + 87, + 130, 144, - 80, - 80, - 131, - 127, - 43, - 22, - 129, - 62, - 43, - 166, - 199, - 89, - 231, - 241, - 158, - 154, - 138, - 233, - 241, - 141, - 195, 3, - 229, - 184, - 110, - 235, - 199, - 122, - 141, - 92, - 134, - 157, - 117, - 234, - 253, - 210, - 135, - 135, 96, - 64, - 81, - 97, - 9, - 16, - 146, + 31, + 22, + 130, + 1, 145, - 144, - 97, - 24, - 32, - 86, 91, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 162, - 80, 80, 80, 80, 80, 80, - 86, - 91, - 96, - 4, - 96, - 32, - 82, - 96, - 0, 144, - 129, - 82, + 128, 96, - 64, - 144, - 32, + 2, + 1, 128, 84, - 129, - 144, 97, - 9, - 59, + 14, + 174, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -9543,27 +14300,27 @@ pub mod summa { 128, 84, 97, - 9, - 103, + 14, + 218, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 9, - 180, + 15, + 39, 87, 128, 96, 31, 16, 97, - 9, - 137, + 14, + 252, 87, 97, 1, @@ -9581,8 +14338,8 @@ pub mod summa { 1, 145, 97, - 9, - 180, + 15, + 39, 86, 91, 130, @@ -9615,8 +14372,8 @@ pub mod summa { 131, 17, 97, - 9, - 151, + 15, + 10, 87, 130, 144, @@ -9634,79 +14391,19 @@ pub mod summa { 80, 80, 144, - 80, - 129, - 86, - 91, - 97, - 9, - 198, - 97, - 15, - 76, - 86, - 91, - 97, - 9, - 208, - 96, - 0, - 97, - 15, - 166, - 86, - 91, - 86, - 91, - 96, - 3, - 129, - 129, - 84, - 129, - 16, - 97, - 9, - 226, - 87, - 96, - 0, - 128, - 253, - 91, - 144, - 96, - 0, - 82, - 96, - 32, - 96, - 0, - 32, - 144, - 96, - 4, - 2, - 1, - 96, - 0, - 145, - 80, - 144, - 80, 128, 96, - 0, + 3, 1, 128, 84, 97, - 10, - 5, + 15, + 60, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, @@ -9745,27 +14442,27 @@ pub mod summa { 128, 84, 97, - 10, - 49, + 15, + 104, 144, 97, - 22, - 54, + 26, + 223, 86, 91, 128, 21, 97, - 10, - 126, + 15, + 181, 87, 128, 96, 31, 16, 97, - 10, - 83, + 15, + 138, 87, 97, 1, @@ -9783,8 +14480,8 @@ pub mod summa { 1, 145, 97, - 10, - 126, + 15, + 181, 86, 91, 130, @@ -9817,8 +14514,8 @@ pub mod summa { 131, 17, 97, - 10, - 97, + 15, + 152, 87, 130, 144, @@ -9836,474 +14533,453 @@ pub mod summa { 80, 80, 144, - 128, + 80, + 132, + 86, + 91, + 97, + 15, + 199, + 97, + 18, + 217, + 86, + 91, + 96, + 0, + 91, + 129, + 81, + 129, + 16, + 21, + 97, + 18, + 37, + 87, + 96, + 0, + 130, + 130, + 129, + 81, + 129, + 16, + 97, + 15, + 231, + 87, + 97, + 15, + 231, + 97, + 25, + 109, + 86, + 91, + 96, + 32, + 2, 96, + 32, 1, 1, - 128, - 84, + 81, + 96, + 0, + 1, + 81, + 96, + 64, + 81, + 96, + 32, + 1, 97, - 10, - 147, + 16, + 3, + 145, 144, 97, - 22, - 54, + 28, + 230, 86, 91, + 96, + 64, 128, + 81, 96, 31, + 25, + 129, + 132, + 3, 1, + 129, + 82, + 145, + 129, + 82, + 129, + 81, 96, 32, - 128, + 146, + 131, + 1, + 32, + 96, + 0, + 129, + 129, + 82, + 96, + 6, + 144, + 147, + 82, 145, - 4, - 2, + 32, + 84, + 144, + 145, + 80, + 128, + 21, + 97, + 16, + 121, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, 96, 32, + 96, + 4, + 130, + 1, + 82, + 96, + 24, + 96, + 36, + 130, 1, + 82, + 127, + 65, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 97, + 108, + 114, + 101, + 97, + 100, + 121, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 96, - 64, - 81, - 144, - 129, + 68, + 130, 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, 82, 96, - 32, + 100, 1, - 130, - 128, - 84, 97, - 10, - 191, - 144, - 97, - 22, - 54, + 2, + 68, 86, 91, - 128, - 21, - 97, - 11, - 12, - 87, - 128, 96, - 31, + 4, + 132, + 132, + 129, + 81, + 129, 16, 97, - 10, - 225, + 16, + 141, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 16, + 141, 97, - 11, - 12, + 25, + 109, 86, 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, - 96, - 32, 96, - 0, 32, 144, - 91, - 129, - 84, 129, - 82, + 2, + 145, 144, - 96, - 1, + 145, 1, - 144, - 96, - 32, + 129, 1, - 128, - 131, - 17, - 97, - 10, - 239, - 87, + 81, 130, - 144, - 3, + 84, 96, - 31, - 22, - 130, 1, + 129, + 1, + 132, + 85, + 96, + 0, + 147, + 132, + 82, 145, - 91, - 80, - 80, - 80, - 80, - 80, 144, - 128, + 146, + 32, + 130, + 81, 96, + 4, + 144, + 146, 2, 1, - 128, - 84, + 144, + 129, + 144, 97, - 11, - 33, + 16, + 191, 144, + 130, 97, - 22, - 54, + 29, + 2, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, + 80, 96, 32, + 130, 1, - 96, - 64, 81, - 144, - 129, - 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, 96, - 32, 1, 130, - 128, - 84, + 1, + 144, 97, - 11, - 77, + 16, + 212, 144, + 130, 97, - 22, - 54, + 29, + 2, 86, 91, - 128, - 21, - 97, - 11, - 154, - 87, - 128, + 80, 96, - 31, - 16, - 97, - 11, - 111, - 87, - 97, + 64, + 130, 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, + 81, 96, - 32, + 2, + 130, 1, - 145, + 144, 97, - 11, - 154, + 16, + 233, + 144, + 130, + 97, + 29, + 2, 86, 91, + 80, + 96, + 96, 130, 1, - 145, + 81, + 96, + 3, + 130, + 1, + 144, + 97, + 16, + 254, 144, + 130, + 97, + 29, + 2, + 86, + 91, + 80, + 80, + 96, + 4, + 84, 96, 0, + 132, + 129, 82, 96, - 32, + 6, 96, - 0, 32, - 144, - 91, - 129, - 84, - 129, 82, - 144, 96, - 1, - 1, + 64, 144, - 96, 32, - 1, - 128, + 85, + 80, 131, - 17, - 97, - 11, - 125, - 87, - 130, + 81, + 132, 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, + 132, 144, - 128, - 96, - 3, - 1, - 128, - 84, + 129, + 16, 97, - 11, - 175, - 144, + 17, + 39, + 87, 97, - 22, - 54, + 17, + 39, + 97, + 25, + 109, 86, 91, - 128, - 96, - 31, - 1, 96, 32, - 128, - 145, - 4, 2, 96, 32, 1, - 96, - 64, - 81, - 144, - 129, 1, + 81, 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, + 0, 1, - 130, - 128, - 84, - 97, - 11, - 219, - 144, - 97, - 22, - 54, - 86, - 91, + 81, + 81, + 96, + 0, + 20, + 21, 128, 21, 97, - 12, - 40, + 17, + 99, 87, - 128, - 96, - 31, + 80, + 131, + 131, + 129, + 81, + 129, 16, 97, - 11, - 253, + 17, + 81, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 17, + 81, 97, - 12, - 40, + 25, + 109, 86, 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, 96, 32, + 2, 96, - 0, 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, - 96, 1, 1, - 144, + 81, 96, 32, 1, - 128, - 131, - 17, - 97, - 12, - 11, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 144, - 80, - 132, - 86, - 91, - 97, - 12, - 58, - 97, - 15, - 76, - 86, - 91, + 81, + 81, 96, 0, + 20, + 21, 91, - 129, - 81, - 129, - 16, + 128, 21, 97, - 14, - 152, + 17, + 142, 87, - 96, - 0, - 130, - 130, + 80, + 131, + 131, 129, 81, 129, 16, 97, - 12, - 90, + 17, + 124, 87, 97, - 12, - 90, + 17, + 124, 97, - 22, - 32, + 25, + 109, 86, 91, 96, @@ -10315,70 +14991,61 @@ pub mod summa { 1, 81, 96, - 0, + 64, 1, 81, - 96, - 64, 81, 96, - 32, - 1, + 0, + 20, + 21, + 91, + 128, + 21, + 97, + 17, + 185, + 87, + 80, + 131, + 131, + 129, + 81, + 129, + 16, + 97, + 17, + 167, + 87, 97, - 12, - 118, - 145, - 144, + 17, + 167, 97, - 24, - 181, + 25, + 109, 86, 91, 96, - 64, - 128, - 81, + 32, + 2, 96, - 31, - 25, - 129, - 132, - 3, + 32, + 1, 1, - 129, - 82, - 145, - 129, - 82, - 129, 81, 96, - 32, - 146, - 131, + 96, 1, - 32, + 81, + 81, 96, 0, - 129, - 129, - 82, - 96, - 5, - 144, - 147, - 82, - 145, - 32, - 84, - 144, - 145, - 80, - 128, + 20, 21, + 91, 97, - 12, - 236, + 18, + 16, 87, 96, 64, @@ -10400,381 +15067,287 @@ pub mod summa { 1, 82, 96, - 24, + 34, 96, 36, 130, 1, 82, 127, - 65, - 100, + 73, + 110, + 118, + 97, + 108, + 105, 100, + 32, + 112, 114, - 101, - 115, - 115, + 111, + 111, + 102, + 32, + 111, + 102, 32, 97, - 108, + 100, + 100, 114, 101, - 97, - 100, - 121, + 115, + 115, 32, - 118, + 111, + 119, + 110, 101, 114, - 105, - 102, - 105, - 101, - 100, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 115, + 104, 96, 68, 130, 1, 82, - 96, - 100, - 1, 97, - 2, - 60, - 86, - 91, + 6, + 151, 96, - 3, - 132, - 132, - 129, - 81, - 129, - 16, - 97, - 13, - 0, - 87, - 97, - 13, - 0, - 97, - 22, - 32, - 86, - 91, + 244, + 27, 96, - 32, - 144, - 129, - 2, - 145, - 144, - 145, - 1, - 129, - 1, - 81, + 100, 130, - 84, - 96, - 1, - 129, 1, - 132, - 85, - 96, - 0, - 147, - 132, 82, - 145, - 144, - 146, - 32, - 130, - 81, 96, - 4, - 144, - 146, - 2, + 132, 1, - 144, - 129, - 144, - 97, - 13, - 50, - 144, - 130, 97, - 23, - 96, + 2, + 68, 86, 91, 80, - 96, - 32, - 130, - 1, - 81, - 96, - 1, - 130, - 1, - 144, + 80, + 128, + 128, 97, - 13, - 71, + 18, + 29, 144, - 130, 97, - 23, - 96, + 28, + 131, 86, 91, + 145, + 80, 80, - 96, - 64, - 130, - 1, - 81, - 96, - 2, - 130, - 1, - 144, - 97, - 13, - 92, - 144, - 130, 97, - 23, - 96, + 15, + 202, 86, 91, 80, + 127, + 56, + 35, + 21, + 212, + 213, + 106, 96, + 53, + 225, + 137, + 155, + 255, + 231, + 125, + 155, + 236, + 239, + 175, + 95, + 38, + 80, + 228, + 50, + 59, + 39, + 133, + 72, + 87, + 160, + 69, + 70, + 88, + 129, 96, - 130, - 1, + 64, 81, - 96, - 3, - 130, - 1, - 144, 97, - 13, - 113, + 18, + 85, + 145, 144, - 130, 97, - 23, - 96, + 29, + 194, 86, 91, - 80, - 80, - 96, - 3, - 84, - 96, - 0, - 132, - 129, - 82, - 96, - 5, - 96, - 32, - 82, 96, 64, - 144, - 32, - 85, - 80, - 131, 81, - 132, - 144, - 132, + 128, + 145, + 3, 144, - 129, - 16, - 97, - 13, - 154, - 87, + 161, + 80, + 86, + 91, 97, - 13, - 154, + 18, + 104, 97, - 22, - 32, + 18, + 217, 86, 91, 96, - 32, - 2, - 96, - 32, 1, - 1, - 81, 96, - 0, 1, - 81, - 81, 96, - 0, - 20, - 21, - 128, - 21, + 160, + 27, + 3, + 129, + 22, 97, - 13, - 214, + 18, + 205, 87, - 80, - 131, - 131, - 129, + 96, + 64, 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, - 16, - 97, - 13, - 196, - 87, - 97, - 13, - 196, - 97, - 22, - 32, - 86, - 91, + 82, 96, 32, - 2, 96, - 32, - 1, + 4, + 130, 1, - 81, + 82, 96, - 32, - 1, - 81, - 81, + 38, 96, - 0, - 20, - 21, - 91, - 128, - 21, - 97, - 14, + 36, + 130, 1, - 87, - 80, - 131, - 131, - 129, - 81, - 129, - 16, - 97, - 13, - 239, - 87, - 97, - 13, - 239, + 82, + 127, + 79, + 119, + 110, 97, - 22, + 98, + 108, + 101, + 58, 32, - 86, - 91, - 96, + 110, + 101, + 119, 32, - 2, - 96, + 111, + 119, + 110, + 101, + 114, 32, + 105, + 115, + 32, + 116, + 104, + 101, + 32, + 122, + 101, + 114, + 111, + 32, + 97, + 96, + 68, + 130, 1, - 1, - 81, + 82, + 101, + 100, + 100, + 114, + 101, + 115, + 115, 96, - 64, + 208, + 27, + 96, + 100, + 130, 1, - 81, - 81, + 82, 96, - 0, - 20, - 21, + 132, + 1, + 97, + 2, + 68, + 86, 91, - 128, - 21, 97, - 14, - 44, - 87, - 80, - 131, - 131, - 129, - 81, + 18, + 214, 129, - 16, - 97, - 14, - 26, - 87, - 97, - 14, - 26, 97, - 22, - 32, + 19, + 51, + 86, + 91, + 80, 86, 91, 96, - 32, - 2, + 0, + 84, 96, - 32, 1, - 1, - 81, - 96, 96, 1, - 81, - 81, 96, - 0, + 160, + 27, + 3, + 22, + 51, 20, - 21, - 91, 97, - 14, - 131, + 10, + 31, 87, 96, 64, @@ -10794,629 +15367,622 @@ pub mod summa { 4, 130, 1, + 129, + 144, 82, 96, - 34, - 96, 36, 130, 1, 82, 127, - 73, + 79, + 119, 110, - 118, 97, + 98, 108, - 105, - 100, + 101, + 58, 32, - 112, + 99, + 97, + 108, + 108, + 101, 114, - 111, - 111, - 102, 32, + 105, + 115, + 32, + 110, 111, - 102, + 116, 32, - 97, - 100, - 100, - 114, + 116, + 104, 101, - 115, - 115, 32, 111, 119, 110, 101, 114, - 115, - 104, 96, 68, 130, 1, 82, - 97, - 6, - 151, - 96, - 244, - 27, 96, 100, - 130, - 1, - 82, - 96, - 132, 1, 97, 2, - 60, + 68, 86, 91, - 80, - 80, - 128, + 96, + 0, 128, - 97, - 14, - 144, - 144, - 97, + 84, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 131, + 129, 22, - 248, - 86, - 91, - 145, - 80, - 80, - 97, - 12, - 61, - 86, - 91, - 80, - 127, - 56, - 35, - 21, - 212, - 213, - 106, 96, - 53, - 225, - 137, - 155, - 255, - 231, - 125, - 155, - 236, - 239, - 175, - 95, - 38, - 80, - 228, - 50, - 59, - 39, - 133, - 72, - 87, + 1, + 96, + 1, + 96, 160, - 69, - 70, - 88, + 27, + 3, + 25, + 131, + 22, 129, + 23, + 132, + 85, 96, 64, 81, - 97, - 14, - 200, 145, 144, - 97, + 146, + 22, + 146, + 131, + 145, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, + 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, 24, - 209, - 86, - 91, - 96, - 64, - 81, - 128, + 111, + 107, + 100, + 87, + 224, 145, - 3, 144, - 161, + 163, + 80, 80, 86, 91, + 96, + 0, + 128, + 131, + 96, + 31, + 132, + 1, + 18, 97, - 14, - 219, + 19, + 149, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, 97, - 15, - 76, - 86, + 19, + 173, + 87, + 96, + 0, + 128, + 253, 91, 96, + 32, + 131, 1, + 145, + 80, + 131, 96, + 32, + 130, + 133, 1, - 96, - 160, - 27, - 3, - 129, - 22, + 1, + 17, + 21, 97, - 15, - 64, + 19, + 197, 87, 96, - 64, - 81, - 98, - 70, + 0, + 128, + 253, + 91, + 146, + 80, + 146, + 144, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, 27, - 205, 96, - 229, - 27, - 129, + 0, 82, 96, - 32, + 65, 96, 4, - 130, - 1, 82, 96, - 38, - 96, 36, - 130, - 1, - 82, - 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, - 32, - 110, - 101, - 119, - 32, - 111, - 119, - 110, - 101, - 114, - 32, - 105, - 115, - 32, - 116, - 104, - 101, - 32, - 122, - 101, - 114, - 111, - 32, - 97, - 96, - 68, - 130, - 1, - 82, - 101, - 100, - 100, - 114, - 101, - 115, - 115, 96, - 208, - 27, + 0, + 253, + 91, 96, - 100, - 130, - 1, - 82, + 64, + 81, 96, - 132, + 128, + 129, 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, 97, - 2, - 60, - 86, - 91, + 20, + 5, + 87, 97, - 15, - 73, - 129, + 20, + 5, 97, - 15, - 166, + 19, + 204, 86, 91, - 80, + 96, + 64, + 82, + 144, 86, 91, 96, - 0, - 84, - 96, - 1, + 64, + 81, 96, + 31, + 130, 1, 96, - 160, - 27, - 3, + 31, + 25, 22, - 51, - 20, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, 97, - 9, - 208, + 20, + 52, 87, + 97, + 20, + 52, + 97, + 19, + 204, + 86, + 91, 96, 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, 82, - 96, - 32, - 96, - 4, - 130, - 1, - 129, + 145, 144, - 82, + 80, + 86, + 91, 96, - 36, + 0, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 130, - 1, - 82, - 127, - 79, - 119, - 110, + 17, + 21, 97, - 98, - 108, - 101, - 58, - 32, - 99, + 20, + 86, + 87, 97, - 108, - 108, - 101, - 114, - 32, - 105, - 115, - 32, - 110, - 111, - 116, - 32, - 116, - 104, - 101, - 32, - 111, - 119, - 110, - 101, - 114, - 96, - 68, - 130, - 1, - 82, + 20, + 86, + 97, + 19, + 204, + 86, + 91, + 80, 96, - 100, + 5, + 27, + 96, + 32, 1, - 97, - 2, - 60, + 144, 86, 91, 96, 0, - 128, - 84, + 130, 96, + 31, + 131, 1, + 18, + 97, + 20, + 113, + 87, 96, - 1, + 0, + 128, + 253, + 91, + 129, + 53, 96, - 160, - 27, - 3, + 32, + 97, + 20, + 134, + 97, + 20, + 129, 131, + 97, + 20, + 60, + 86, + 91, + 97, + 20, + 11, + 86, + 91, + 130, 129, - 22, + 82, 96, + 5, + 146, + 144, + 146, + 27, + 132, 1, - 96, + 129, 1, - 96, - 160, - 27, - 3, - 25, - 131, - 22, + 145, 129, - 23, + 129, + 1, + 144, + 134, 132, - 85, + 17, + 21, + 97, + 20, + 165, + 87, 96, - 64, - 81, + 0, + 128, + 253, + 91, + 130, + 134, + 1, + 91, + 132, + 129, + 16, + 21, + 97, + 20, + 192, + 87, + 128, + 53, + 131, + 82, 145, - 144, - 146, - 22, - 146, 131, + 1, 145, - 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, + 131, + 1, + 97, 20, - 19, - 68, - 205, - 31, - 208, - 164, - 242, - 132, - 25, - 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, - 24, - 111, - 107, - 100, - 87, - 224, - 145, - 144, - 163, + 169, + 86, + 91, + 80, + 150, + 149, + 80, + 80, + 80, + 80, 80, 80, 86, 91, - 130, - 128, - 84, - 130, - 130, - 85, - 144, 96, 0, - 82, + 128, 96, - 32, + 0, + 128, 96, 0, - 32, - 144, - 129, - 1, - 146, - 130, + 128, + 96, + 128, + 135, + 137, + 3, + 18, 21, 97, - 16, - 60, + 20, + 228, 87, - 145, 96, - 32, - 2, - 130, - 1, + 0, + 128, + 253, 91, + 134, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, 130, - 129, 17, 21, 97, - 16, - 60, + 20, + 252, 87, - 130, - 81, - 130, - 144, - 97, - 16, - 44, - 144, - 130, - 97, - 23, - 96, - 86, - 91, - 80, - 145, - 96, - 32, - 1, - 145, - 144, 96, - 1, - 1, - 144, - 97, - 16, - 22, - 86, + 0, + 128, + 253, 91, - 80, 97, - 16, - 72, - 146, - 145, - 80, + 21, + 8, + 138, + 131, + 139, + 1, 97, - 16, - 76, - 86, - 91, - 80, - 144, + 19, + 131, 86, 91, + 144, + 152, + 80, + 150, + 80, + 96, + 32, + 137, + 1, + 53, + 145, + 80, 128, 130, 17, 21, 97, - 16, - 72, + 21, + 33, 87, 96, 0, - 97, - 16, - 96, - 130, - 130, - 97, - 16, - 105, - 86, + 128, + 253, 91, - 80, - 96, - 1, + 97, + 21, + 45, + 138, + 131, + 139, 1, 97, - 16, - 76, + 19, + 131, 86, 91, - 80, - 128, - 84, - 97, - 16, - 117, 144, - 97, - 22, - 54, - 86, - 91, - 96, - 0, - 130, - 85, - 128, - 96, - 31, - 16, - 97, - 16, - 133, - 87, + 150, 80, + 148, 80, - 86, - 91, - 96, - 31, - 1, - 96, - 32, - 144, - 4, - 144, - 96, - 0, - 82, - 96, - 32, 96, - 0, - 32, - 144, - 129, + 64, + 137, 1, - 144, - 97, - 15, - 73, + 53, 145, - 144, - 91, + 80, 128, 130, 17, 21, 97, - 16, - 72, + 21, + 70, 87, 96, 0, - 129, - 85, - 96, - 1, + 128, + 253, + 91, + 80, + 97, + 21, + 83, + 137, + 130, + 138, 1, 97, - 16, - 159, + 20, + 96, + 86, + 91, + 146, + 80, + 80, + 96, + 96, + 135, + 1, + 53, + 144, + 80, + 146, + 149, + 80, + 146, + 149, + 80, + 146, + 149, 86, 91, 96, @@ -11429,8 +15995,8 @@ pub mod summa { 18, 21, 97, - 16, - 197, + 21, + 121, 87, 96, 0, @@ -11452,8 +16018,8 @@ pub mod summa { 16, 21, 97, - 16, - 231, + 21, + 155, 87, 129, 129, @@ -11467,8 +16033,8 @@ pub mod summa { 32, 1, 97, - 16, - 207, + 21, + 131, 86, 91, 80, @@ -11488,8 +16054,8 @@ pub mod summa { 132, 82, 97, - 17, - 8, + 21, + 188, 129, 96, 32, @@ -11500,8 +16066,8 @@ pub mod summa { 134, 1, 97, - 16, - 204, + 21, + 128, 86, 91, 96, @@ -11533,16 +16099,16 @@ pub mod summa { 132, 82, 97, - 17, - 49, + 21, + 229, 96, 128, 133, 1, 130, 97, - 16, - 240, + 21, + 164, 86, 91, 144, @@ -11561,13 +16127,13 @@ pub mod summa { 1, 82, 97, - 17, - 74, + 21, + 254, 130, 130, 97, - 16, - 240, + 21, + 164, 86, 91, 145, @@ -11587,13 +16153,13 @@ pub mod summa { 1, 82, 97, - 17, - 100, + 22, + 24, 130, 130, 97, - 16, - 240, + 21, + 164, 86, 91, 145, @@ -11613,13 +16179,13 @@ pub mod summa { 1, 82, 97, - 17, - 126, + 22, + 50, 130, 130, 97, - 16, - 240, + 21, + 164, 86, 91, 149, @@ -11638,16 +16204,16 @@ pub mod summa { 96, 0, 97, - 17, - 154, + 22, + 78, 96, 32, 131, 1, 132, 97, - 17, - 28, + 21, + 208, 86, 91, 147, @@ -11657,76 +16223,44 @@ pub mod summa { 80, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, 96, - 65, - 96, - 4, + 32, + 129, 82, 96, - 36, - 96, 0, - 253, - 91, - 96, - 64, - 128, - 81, - 144, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 17, - 218, - 87, 97, - 17, - 218, - 97, - 17, - 161, - 86, - 91, + 22, + 78, 96, - 64, - 82, - 144, + 32, + 131, + 1, + 132, + 97, + 21, + 164, 86, 91, 96, - 64, - 81, + 0, + 130, + 96, + 31, + 131, + 1, + 18, + 97, + 22, + 121, + 87, 96, + 0, 128, + 253, + 91, 129, - 1, + 53, 103, 255, 255, @@ -11738,26 +16272,22 @@ pub mod summa { 255, 129, 17, - 130, - 130, - 16, - 23, 21, 97, - 17, - 218, + 22, + 147, 87, 97, - 17, - 218, + 22, + 147, 97, - 17, - 161, + 19, + 204, 86, 91, - 96, - 64, - 81, + 97, + 22, + 166, 96, 31, 130, @@ -11766,62 +16296,94 @@ pub mod summa { 31, 25, 22, - 129, + 96, + 32, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 97, + 20, + 11, + 86, + 91, 129, + 129, + 82, + 132, + 96, + 32, + 131, + 134, + 1, + 1, 17, - 130, - 130, - 16, - 23, 21, 97, - 18, - 44, + 22, + 187, 87, - 97, - 18, - 44, - 97, - 17, - 161, - 86, + 96, + 0, + 128, + 253, 91, + 129, 96, - 64, - 82, + 32, + 133, + 1, + 96, + 32, + 131, + 1, + 55, + 96, + 0, + 145, + 129, + 1, + 96, + 32, + 1, 145, 144, + 145, + 82, + 147, + 146, + 80, + 80, 80, 86, 91, 96, 0, - 130, + 128, 96, - 31, - 131, - 1, + 0, + 128, + 96, + 128, + 133, + 135, + 3, 18, + 21, 97, - 18, - 69, + 22, + 238, 87, 96, 0, 128, 253, 91, - 129, + 132, + 53, + 147, + 80, + 96, + 32, + 133, + 1, 53, 103, 255, @@ -11832,148 +16394,209 @@ pub mod summa { 255, 255, 255, - 129, + 128, + 130, 17, 21, 97, - 18, - 95, + 23, + 13, 87, + 96, + 0, + 128, + 253, + 91, 97, - 18, - 95, + 23, + 25, + 136, + 131, + 137, + 1, 97, - 17, - 161, + 22, + 104, 86, 91, - 97, - 18, - 114, + 148, + 80, 96, - 31, - 130, + 64, + 135, 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 23, + 47, + 87, 96, - 31, - 25, - 22, - 96, - 32, + 0, + 128, + 253, + 91, + 97, + 23, + 59, + 136, + 131, + 137, 1, 97, - 18, - 3, + 20, + 96, 86, 91, - 129, - 129, - 82, - 132, + 147, + 80, 96, - 32, - 131, - 134, - 1, + 96, + 135, 1, + 53, + 145, + 80, + 128, + 130, 17, 21, 97, - 18, - 135, + 23, + 81, 87, 96, 0, 128, 253, 91, + 80, + 97, + 23, + 94, + 135, + 130, + 136, + 1, + 97, + 20, + 96, + 86, + 91, + 145, + 80, + 80, + 146, + 149, + 145, + 148, + 80, + 146, + 80, + 86, + 91, + 96, + 128, 129, + 82, 96, - 32, - 133, - 1, + 0, + 97, + 23, + 125, 96, - 32, + 128, 131, 1, - 55, - 96, - 0, - 145, + 135, + 97, + 21, + 164, + 86, + 91, + 130, 129, - 1, + 3, 96, 32, + 132, 1, - 145, - 144, - 145, 82, - 147, - 146, - 80, - 80, - 80, + 97, + 23, + 143, + 129, + 135, + 97, + 21, + 164, 86, 91, - 96, - 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 144, + 80, 130, - 17, - 21, - 97, - 18, - 190, - 87, + 129, + 3, + 96, + 64, + 132, + 1, + 82, 97, - 18, - 190, + 23, + 163, + 129, + 134, 97, - 17, - 161, + 21, + 164, 86, 91, + 144, 80, + 130, + 129, + 3, 96, - 5, - 27, 96, - 32, + 132, 1, - 144, + 82, + 97, + 13, + 84, + 129, + 133, + 97, + 21, + 164, 86, 91, 96, 0, - 128, - 96, - 0, 96, - 96, - 132, - 134, + 32, + 128, + 131, + 133, 3, 18, 21, 97, - 18, - 221, + 23, + 202, 87, 96, 0, 128, 253, 91, - 131, + 130, 53, 103, 255, @@ -11989,83 +16612,46 @@ pub mod summa { 17, 21, 97, - 18, - 245, + 23, + 226, 87, 96, 0, 128, 253, 91, - 97, - 19, - 1, - 135, - 131, - 136, + 129, + 133, 1, - 97, - 18, - 52, - 86, - 91, - 148, - 80, - 96, - 32, 145, 80, - 129, - 134, - 1, - 53, - 129, - 129, - 17, - 21, - 97, - 19, - 24, - 87, - 96, - 0, - 128, - 253, - 91, - 134, - 1, + 133, 96, 31, - 129, + 131, 1, - 136, - 19, + 18, 97, - 19, - 41, + 23, + 246, 87, 96, 0, 128, 253, 91, - 128, + 129, 53, 97, - 19, - 60, + 24, + 4, 97, - 19, - 55, + 20, + 129, 130, 97, - 18, - 164, - 86, - 91, - 97, - 18, - 3, + 20, + 60, 86, 91, 129, @@ -12077,7 +16663,7 @@ pub mod summa { 144, 145, 27, - 130, + 131, 1, 132, 1, @@ -12086,13 +16672,13 @@ pub mod summa { 129, 1, 144, - 138, + 136, 131, 17, 21, 97, - 19, - 91, + 24, + 35, 87, 96, 0, @@ -12100,7 +16686,7 @@ pub mod summa { 253, 91, 133, - 132, + 133, 1, 91, 131, @@ -12108,40 +16694,103 @@ pub mod summa { 16, 21, 97, - 19, - 236, + 25, + 4, 87, 128, 53, - 134, + 133, 129, 17, 21, 97, - 19, - 118, + 24, + 62, 87, 96, 0, 128, 253, 91, - 133, + 134, 1, 96, - 64, + 128, 129, - 142, + 140, 3, 96, 31, 25, 1, - 18, + 18, + 21, + 97, + 24, + 85, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 24, + 93, + 97, + 19, + 226, + 86, + 91, + 136, + 130, + 1, + 53, + 135, + 129, + 17, + 21, + 97, + 24, + 111, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 24, + 125, + 141, + 139, + 131, + 134, + 1, + 1, + 97, + 22, + 104, + 86, + 91, + 130, + 82, + 80, + 96, + 64, + 128, + 131, + 1, + 53, + 136, + 129, + 17, 21, 97, - 19, - 141, + 24, + 148, 87, 96, 0, @@ -12150,24 +16799,37 @@ pub mod summa { 253, 91, 97, - 19, - 149, + 24, + 162, + 142, + 140, + 131, + 135, + 1, + 1, 97, - 17, - 183, + 22, + 104, 86, 91, - 136, - 130, + 139, + 132, + 1, + 82, + 80, + 96, + 96, + 128, + 132, 1, 53, - 136, + 137, 129, 17, 21, 97, - 19, - 167, + 24, + 187, 87, 96, 0, @@ -12176,34 +16838,38 @@ pub mod summa { 253, 91, 97, - 19, - 181, + 24, + 201, 143, - 139, + 141, 131, - 134, + 136, 1, 1, 97, - 18, - 52, + 22, + 104, 86, 91, - 130, + 131, + 133, + 1, 82, 80, 96, - 64, - 130, + 128, + 132, 1, 53, + 145, + 80, 136, - 129, + 130, 17, 21, 97, - 19, - 203, + 24, + 227, 87, 96, 0, @@ -12212,21 +16878,21 @@ pub mod summa { 253, 91, 97, - 19, - 217, - 143, - 139, - 131, - 134, + 24, + 241, + 142, + 140, + 132, + 135, 1, 1, 97, - 18, - 52, + 22, + 104, 86, 91, - 130, - 139, + 144, + 131, 1, 82, 80, @@ -12240,27 +16906,17 @@ pub mod summa { 134, 1, 97, - 19, - 95, + 24, + 39, 86, 91, 80, + 152, 151, - 154, - 151, - 153, 80, 80, 80, 80, - 96, - 64, - 149, - 144, - 149, - 1, - 53, - 148, 80, 80, 80, @@ -12268,105 +16924,212 @@ pub mod summa { 86, 91, 96, + 0, + 96, 32, - 129, - 82, + 130, + 132, + 3, + 18, + 21, + 97, + 25, + 35, + 87, 96, 0, + 128, + 253, + 91, + 129, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, 97, + 22, + 78, + 87, + 96, + 0, + 128, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, 17, - 154, 96, - 32, - 131, - 1, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 128, + 130, + 2, + 129, + 21, + 130, + 130, + 4, 132, + 20, + 23, 97, - 16, - 240, + 25, + 103, + 87, + 97, + 25, + 103, + 97, + 25, + 58, + 86, + 91, + 146, + 145, + 80, + 80, 86, 91, + 99, + 78, + 72, + 123, + 113, 96, - 128, + 224, + 27, + 96, + 0, + 82, + 96, + 50, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, 129, + 131, 82, + 129, + 129, + 96, + 32, + 133, + 1, + 55, + 80, 96, 0, - 97, - 20, - 41, + 130, + 130, + 1, 96, - 128, - 131, + 32, + 144, + 129, 1, - 135, - 97, - 16, - 240, + 145, + 144, + 145, + 82, + 96, + 31, + 144, + 145, + 1, + 96, + 31, + 25, + 22, + 144, + 145, + 1, + 1, + 144, 86, 91, - 130, + 96, + 0, 129, - 3, + 81, + 128, + 132, + 82, 96, 32, + 128, + 133, + 1, + 148, + 80, + 128, 132, 1, - 82, + 96, + 0, + 91, + 131, + 129, + 16, + 21, 97, - 20, - 59, + 25, + 220, + 87, 129, + 81, 135, - 97, - 16, - 240, - 86, - 91, - 144, - 80, + 82, + 149, 130, - 129, - 3, - 96, - 64, - 132, 1, - 82, - 97, - 20, - 79, - 129, - 134, - 97, - 16, - 240, - 86, - 91, + 149, 144, - 80, 130, - 129, - 3, - 96, + 1, + 144, 96, - 132, 1, - 82, - 97, - 20, - 99, - 129, - 133, + 1, 97, - 16, - 240, + 25, + 192, 86, 91, - 151, - 150, - 80, 80, + 148, + 149, + 148, 80, 80, 80, @@ -12375,343 +17138,245 @@ pub mod summa { 86, 91, 96, - 0, + 1, 96, - 32, - 128, - 131, - 133, + 1, + 96, + 160, + 27, 3, - 18, - 21, - 97, - 20, + 133, + 22, 129, - 87, + 82, 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 20, - 153, - 87, 96, - 0, - 128, - 253, - 91, - 129, - 133, - 1, - 145, - 80, - 133, 96, - 31, - 131, + 32, + 130, 1, - 18, - 97, - 20, - 173, - 87, + 129, + 144, + 82, 96, 0, - 128, - 253, - 91, - 129, - 53, - 97, - 20, - 187, + 144, 97, - 19, - 55, - 130, + 26, + 12, + 144, + 131, + 1, + 133, + 135, 97, - 18, - 164, + 25, + 131, 86, 91, + 130, 129, - 129, - 82, + 3, 96, - 5, - 145, - 144, - 145, - 27, - 131, - 1, - 132, - 1, - 144, + 64, 132, - 129, 1, - 144, - 136, - 131, - 17, - 21, + 82, 97, - 20, - 218, - 87, - 96, - 0, - 128, - 253, - 91, - 133, - 133, - 1, - 91, - 131, + 13, + 84, 129, - 16, - 21, - 97, - 21, - 187, - 87, - 128, - 53, 133, - 129, - 17, - 21, 97, - 20, - 245, - 87, + 25, + 172, + 86, + 91, 96, 0, - 128, - 253, - 91, - 134, - 1, 96, - 128, - 129, - 140, + 32, + 130, + 132, 3, - 96, - 31, - 25, - 1, 18, 21, 97, - 21, - 12, + 26, + 48, 87, 96, 0, 128, - 129, 253, 91, - 97, - 21, - 20, - 97, - 17, - 224, - 86, - 91, - 136, - 130, - 1, - 53, - 135, 129, - 17, + 81, + 128, 21, + 21, + 129, + 20, 97, - 21, - 38, + 22, + 78, 87, 96, 0, 128, - 129, 253, 91, - 97, - 21, - 52, - 141, - 139, - 131, - 134, - 1, + 128, + 130, 1, + 128, + 130, + 17, + 21, 97, - 18, - 52, + 25, + 103, + 87, + 97, + 25, + 103, + 97, + 25, + 58, 86, 91, - 130, - 82, - 80, 96, - 64, + 0, 128, - 131, - 1, - 53, - 136, - 129, + 133, + 133, 17, 21, 97, - 21, - 75, + 26, + 99, 87, 96, 0, 128, - 129, 253, 91, - 97, - 21, - 89, - 142, - 140, 131, - 135, - 1, - 1, - 97, - 18, - 52, - 86, - 91, - 139, - 132, - 1, - 82, - 80, - 96, - 96, - 128, - 132, - 1, - 53, - 137, - 129, + 134, 17, 21, 97, - 21, - 114, + 26, + 112, 87, 96, 0, 128, - 129, 253, 91, - 97, - 21, - 128, - 143, - 141, - 131, - 136, - 1, + 80, + 80, + 130, 1, - 97, - 18, - 52, + 147, + 145, + 144, + 146, + 3, + 145, + 80, 86, 91, 131, 133, - 1, - 82, - 80, + 130, + 55, 96, - 128, + 0, 132, - 1, - 53, - 145, - 80, - 136, 130, - 17, - 21, - 97, - 21, - 154, - 87, + 1, 96, 0, - 128, 129, - 253, + 82, + 131, + 133, + 130, + 55, + 96, + 0, + 147, + 1, + 146, + 131, + 82, + 80, + 144, + 148, + 147, + 80, + 80, + 80, + 80, + 86, 91, - 97, - 21, - 168, - 142, - 140, - 132, - 135, + 96, + 1, + 96, 1, + 96, + 160, + 27, + 3, + 132, + 22, + 129, + 82, + 96, + 96, + 96, + 32, + 130, 1, + 129, + 144, + 82, + 96, + 0, + 144, 97, - 18, - 52, - 86, - 91, + 26, + 195, 144, 131, 1, - 82, - 80, + 133, + 97, + 21, + 164, + 86, + 91, + 130, + 129, + 3, + 96, + 64, 132, - 82, - 80, - 145, - 134, - 1, - 145, - 134, 1, + 82, 97, - 20, - 222, + 26, + 213, + 129, + 133, + 97, + 25, + 172, 86, 91, - 80, - 152, - 151, - 80, - 80, + 150, + 149, 80, 80, 80, @@ -12721,46 +17386,35 @@ pub mod summa { 86, 91, 96, - 0, - 96, - 32, + 1, + 129, + 129, + 28, + 144, 130, - 132, - 3, - 18, - 21, + 22, + 128, 97, - 21, - 218, + 26, + 243, 87, 96, - 0, - 128, - 253, + 127, + 130, + 22, + 145, + 80, 91, - 129, - 53, - 96, - 1, - 96, - 1, 96, - 160, - 27, - 3, - 129, - 22, + 32, + 130, + 16, 129, - 20, + 3, 97, - 17, - 154, + 27, + 19, 87, - 96, - 0, - 128, - 253, - 91, 99, 78, 72, @@ -12773,7 +17427,7 @@ pub mod summa { 0, 82, 96, - 17, + 34, 96, 4, 82, @@ -12783,201 +17437,343 @@ pub mod summa { 0, 253, 91, + 80, + 145, + 144, + 80, + 86, + 91, + 96, + 31, + 130, + 17, + 21, + 97, + 27, + 99, + 87, + 96, + 0, 129, 129, - 3, + 82, + 96, + 32, 129, + 32, + 96, + 31, + 133, + 1, + 96, + 5, + 28, 129, - 17, + 1, + 96, + 32, + 134, + 16, 21, 97, - 22, - 26, + 27, + 64, 87, + 80, + 128, + 91, + 96, + 31, + 133, + 1, + 96, + 5, + 28, + 130, + 1, + 145, + 80, + 91, + 129, + 129, + 16, + 21, 97, - 22, - 26, + 27, + 95, + 87, + 130, + 129, + 85, + 96, + 1, + 1, 97, - 21, - 241, + 27, + 76, 86, 91, - 146, - 145, + 80, + 80, + 80, + 91, + 80, 80, 80, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 131, + 17, + 21, + 97, + 27, + 128, + 87, + 97, + 27, + 128, + 97, + 19, + 204, + 86, + 91, + 97, + 27, + 148, + 131, + 97, 27, + 142, + 131, + 84, + 97, + 26, + 223, + 86, + 91, + 131, + 97, + 27, + 25, + 86, + 91, 96, 0, - 82, - 96, - 50, - 96, - 4, - 82, 96, - 36, - 96, - 0, - 253, - 91, + 31, + 132, + 17, 96, 1, 129, - 129, - 28, - 144, - 130, - 22, - 128, + 20, 97, - 22, - 74, + 27, + 200, 87, 96, - 127, + 0, + 133, + 21, + 97, + 27, + 176, + 87, + 80, + 131, 130, + 1, + 53, + 91, + 96, + 0, + 25, + 96, + 3, + 135, + 144, + 27, + 28, + 25, 22, - 145, - 80, + 96, + 1, + 134, + 144, + 27, + 23, + 131, + 85, + 97, + 28, + 34, + 86, 91, 96, + 0, + 131, + 129, + 82, + 96, 32, + 144, + 32, + 96, + 31, + 25, + 134, + 22, + 144, + 131, + 91, 130, - 16, 129, - 3, + 16, + 21, 97, - 22, - 106, + 27, + 249, 87, - 99, - 78, - 72, - 123, - 113, + 134, + 133, + 1, + 53, + 130, + 85, 96, - 224, + 32, + 148, + 133, + 1, + 148, + 96, + 1, + 144, + 146, + 1, + 145, + 1, + 97, 27, + 217, + 86, + 91, + 80, + 134, + 130, + 16, + 21, + 97, + 28, + 22, + 87, 96, 0, - 82, + 25, 96, - 34, + 248, + 136, 96, - 4, - 82, + 3, + 27, + 22, + 28, + 25, + 132, + 135, + 1, + 53, + 22, + 129, + 85, + 91, + 80, + 80, 96, - 36, + 1, + 133, 96, - 0, - 253, + 1, + 27, + 1, + 131, + 85, 91, 80, - 145, - 144, + 80, + 80, + 80, 80, 86, 91, 96, - 1, - 96, - 1, 96, - 160, - 27, - 3, - 132, - 22, 129, 82, 96, + 0, + 97, + 28, + 60, 96, 96, - 32, - 128, 131, 1, + 136, + 97, + 25, + 172, + 86, + 91, 130, - 144, - 82, + 129, + 3, 96, - 0, - 145, - 97, - 22, - 149, - 144, + 32, 132, 1, - 134, + 82, 97, - 16, - 240, + 28, + 79, + 129, + 135, + 137, + 97, + 25, + 131, 86, 91, - 131, + 144, + 80, + 130, 129, 3, 96, 64, - 133, - 1, - 82, 132, - 81, - 128, - 130, - 82, - 130, - 134, 1, - 145, - 131, - 1, - 144, - 96, - 0, - 91, - 129, + 82, + 97, + 28, + 100, 129, - 16, - 21, + 133, + 135, 97, - 22, - 200, - 87, - 131, - 81, + 25, 131, - 82, - 146, - 132, - 1, - 146, - 145, - 132, - 1, - 145, - 96, - 1, - 1, - 97, - 22, - 172, 86, 91, - 80, - 144, 152, 151, 80, @@ -12990,39 +17786,24 @@ pub mod summa { 80, 86, 91, - 96, - 0, - 96, - 32, - 130, - 132, + 129, + 129, 3, - 18, - 21, - 97, - 22, - 232, - 87, - 96, - 0, - 128, - 253, - 91, 129, - 81, - 128, - 21, - 21, 129, - 20, - 97, 17, - 154, + 21, + 97, + 25, + 103, 87, - 96, - 0, - 128, - 253, + 97, + 25, + 103, + 97, + 25, + 58, + 86, 91, 96, 0, @@ -13031,15 +17812,15 @@ pub mod summa { 130, 1, 97, - 23, - 10, + 28, + 149, 87, 97, - 23, - 10, + 28, + 149, 97, - 21, - 241, + 25, + 58, 86, 91, 80, @@ -13050,80 +17831,103 @@ pub mod summa { 86, 91, 96, - 31, - 130, - 17, - 21, - 97, - 23, - 91, - 87, + 1, 96, - 0, - 129, + 1, + 96, + 160, + 27, + 3, + 133, + 22, 129, 82, 96, + 128, + 96, 32, + 130, + 1, 129, - 32, + 144, + 82, 96, - 31, - 133, + 0, + 144, + 97, + 28, + 192, + 144, + 131, 1, + 134, + 97, + 21, + 164, + 86, + 91, + 130, + 129, + 3, 96, - 5, + 64, + 132, + 1, + 82, + 97, 28, + 210, 129, - 1, - 96, - 32, 134, - 16, - 21, 97, - 23, - 56, - 87, - 80, - 128, + 25, + 172, + 86, 91, + 144, + 80, + 130, + 129, + 3, 96, - 31, - 133, - 1, 96, - 5, - 28, - 130, + 132, 1, - 145, - 80, - 91, - 129, + 82, + 97, + 13, + 84, 129, - 16, - 21, + 133, 97, - 23, - 87, - 87, + 25, + 172, + 86, + 91, + 96, + 0, 130, + 81, + 97, + 28, + 248, 129, - 85, + 132, 96, - 1, + 32, + 135, 1, 97, - 23, - 68, + 21, + 128, 86, 91, - 80, - 80, - 80, - 91, - 80, + 145, + 144, + 145, + 1, + 146, + 145, 80, 80, 86, @@ -13143,35 +17947,35 @@ pub mod summa { 17, 21, 97, - 23, - 122, + 29, + 28, 87, 97, - 23, - 122, + 29, + 28, 97, - 17, - 161, + 19, + 204, 86, 91, 97, - 23, - 142, + 29, + 48, 129, 97, - 23, - 136, + 29, + 42, 132, 84, 97, - 22, - 54, + 26, + 223, 86, 91, 132, 97, - 23, - 17, + 27, + 25, 86, 91, 96, @@ -13186,16 +17990,16 @@ pub mod summa { 129, 20, 97, - 23, - 195, + 29, + 101, 87, 96, 0, 132, 21, 97, - 23, - 171, + 29, + 77, 87, 80, 133, @@ -13223,8 +18027,8 @@ pub mod summa { 133, 85, 97, - 23, - 87, + 27, + 95, 86, 91, 96, @@ -13240,260 +18044,83 @@ pub mod summa { 31, 25, 134, - 22, - 145, - 91, - 130, - 129, - 16, - 21, - 97, - 23, - 242, - 87, - 136, - 134, - 1, - 81, - 130, - 85, - 148, - 132, - 1, - 148, - 96, - 1, - 144, - 145, - 1, - 144, - 132, - 1, - 97, - 23, - 211, - 86, - 91, - 80, - 133, - 130, - 16, - 21, - 97, - 24, - 16, - 87, - 135, - 133, - 1, - 81, - 96, - 0, - 25, - 96, - 3, - 136, - 144, - 27, - 96, - 248, - 22, - 28, - 25, - 22, - 129, - 85, - 91, - 80, - 80, - 80, - 80, - 80, - 96, - 1, - 144, - 129, - 27, - 1, - 144, - 85, - 80, - 86, - 91, - 96, - 0, - 96, - 64, - 128, - 131, - 82, - 97, - 24, - 51, - 129, - 132, - 1, - 134, - 97, - 16, - 240, - 86, - 91, - 96, - 32, - 132, - 130, - 3, - 129, - 134, - 1, - 82, - 129, - 134, - 81, - 128, - 132, - 82, - 130, - 132, - 1, - 145, - 80, - 130, - 129, - 96, - 5, - 27, - 133, - 1, - 1, - 131, - 137, - 1, - 96, - 0, - 91, - 131, - 129, - 16, - 21, - 97, - 24, - 165, - 87, - 134, - 131, - 3, - 96, - 31, - 25, - 1, - 133, - 82, - 129, - 81, - 128, - 81, - 137, - 133, - 82, - 97, - 24, - 121, - 138, - 134, - 1, + 22, + 145, + 91, 130, - 97, + 129, 16, - 240, - 86, - 91, - 145, + 21, + 97, + 29, + 148, + 87, 136, + 134, 1, 81, - 133, - 131, - 3, - 134, - 138, + 130, + 85, + 148, + 132, + 1, + 148, + 96, 1, - 82, - 145, 144, - 80, - 97, - 24, 145, - 129, - 131, + 1, + 144, + 132, + 1, 97, - 16, - 240, + 29, + 117, 86, 91, - 150, - 136, - 1, - 150, - 148, 80, - 80, - 80, - 144, + 133, + 130, + 16, + 21, + 97, + 29, + 178, + 87, + 135, 133, 1, + 81, + 96, + 0, + 25, + 96, + 3, + 136, 144, + 27, 96, - 1, - 1, - 97, - 24, + 248, + 22, + 28, + 25, + 22, + 129, 85, - 86, 91, 80, - 144, - 154, - 153, - 80, - 80, - 80, - 80, - 80, - 80, 80, 80, 80, 80, - 86, - 91, - 96, - 0, - 130, - 81, - 97, - 24, - 199, - 129, - 132, 96, - 32, - 135, 1, - 97, - 16, - 204, - 86, - 91, - 145, 144, - 145, + 129, + 27, 1, - 146, - 145, - 80, + 144, + 85, 80, 86, 91, @@ -13541,8 +18168,8 @@ pub mod summa { 16, 21, 97, - 25, - 38, + 30, + 23, 87, 96, 63, @@ -13554,14 +18181,14 @@ pub mod summa { 132, 82, 97, - 25, - 20, + 30, + 5, 133, 131, 81, 97, - 17, - 28, + 21, + 208, 86, 91, 148, @@ -13578,8 +18205,8 @@ pub mod summa { 1, 1, 97, - 24, - 248, + 29, + 233, 86, 91, 80, @@ -13605,38 +18232,38 @@ pub mod summa { 34, 18, 32, - 14, - 212, - 173, - 33, - 249, - 5, - 195, - 118, - 163, - 194, - 120, - 87, + 134, + 176, + 92, + 129, + 176, + 246, + 11, + 26, + 49, + 238, + 104, + 196, + 221, + 82, + 171, + 23, + 219, + 113, + 171, 244, - 94, + 157, + 67, + 134, + 216, + 115, + 248, + 142, 231, - 128, - 9, - 167, - 245, - 111, + 228, + 146, 232, - 20, - 185, - 115, - 203, - 184, - 216, - 227, - 222, - 145, - 247, - 123, + 106, 100, 115, 111, @@ -13650,9 +18277,8 @@ pub mod summa { 51, ]; ///The deployed bytecode of the contract. - pub static SUMMA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); + pub static SUMMA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); pub struct Summa(::ethers::contract::Contract); impl ::core::clone::Clone for Summa { fn clone(&self) -> Self { @@ -13672,7 +18298,9 @@ pub mod summa { } impl ::core::fmt::Debug for Summa { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(stringify!(Summa)).field(&self.address()).finish() + f.debug_tuple(stringify!(Summa)) + .field(&self.address()) + .finish() } } impl Summa { @@ -13682,13 +18310,11 @@ pub mod summa { address: T, client: ::std::sync::Arc, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SUMMA_ABI.clone(), - client, - ), - ) + Self(::ethers::contract::Contract::new( + address.into(), + SUMMA_ABI.clone(), + client, + )) } /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction @@ -13750,18 +18376,13 @@ pub mod summa { pub fn commitments( &self, p0: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Bytes, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([73, 206, 137, 151], p0) .expect("method not found (this should never happen)") } ///Calls the contract's `config` (0x79502c55) function - pub fn config( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn config(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([121, 80, 44, 85], ()) .expect("method not found (this should never happen)") @@ -13778,31 +18399,30 @@ pub mod summa { ///Calls the contract's `owner` (0x8da5cb5b) function pub fn owner( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } ///Calls the contract's `renounceOwnership` (0x715018a6) function - pub fn renounce_ownership( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn renounce_ownership(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([113, 80, 24, 166], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `submitCommitment` (0x43f9ec07) function + ///Calls the contract's `submitCommitment` (0x05ab9860) function pub fn submit_commitment( &self, - proof: ::ethers::core::types::Bytes, - cryptocurrencies: ::std::vec::Vec, + snark_proof: ::ethers::core::types::Bytes, + grand_sum_proof: ::ethers::core::types::Bytes, + total_balances: ::std::vec::Vec<::ethers::core::types::U256>, timestamp: ::ethers::core::types::U256, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([67, 249, 236, 7], (proof, cryptocurrencies, timestamp)) + .method_hash( + [5, 171, 152, 96], + (snark_proof, grand_sum_proof, total_balances, timestamp), + ) .expect("method not found (this should never happen)") } ///Calls the contract's `submitProofOfAddressOwnership` (0xc7ddca0e) function @@ -13823,15 +18443,27 @@ pub mod summa { .method_hash([242, 253, 227, 139], new_owner) .expect("method not found (this should never happen)") } - ///Calls the contract's `verificationKey` (0x7ddc907d) function - pub fn verification_key( + ///Calls the contract's `verifyInclusionProof` (0x9c382559) function + pub fn verify_inclusion_proof( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + timestamp: ::ethers::core::types::U256, + inclusion_proof: ::ethers::core::types::Bytes, + challenges: ::std::vec::Vec<::ethers::core::types::U256>, + values: ::std::vec::Vec<::ethers::core::types::U256>, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([125, 220, 144, 125], ()) + .method_hash( + [156, 56, 37, 89], + (timestamp, inclusion_proof, challenges, values), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `verifyingKey` (0x7950c5f8) function + pub fn verifying_key( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 80, 197, 248], ()) .expect("method not found (this should never happen)") } ///Gets the contract's `AddressOwnershipProofSubmitted` event @@ -13857,22 +18489,19 @@ pub mod summa { ///Gets the contract's `OwnershipTransferred` event pub fn ownership_transferred_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, OwnershipTransferredFilter> + { self.0.event() } /// Returns an `Event` builder for all the events of this contract. pub fn events( &self, ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, SummaEvents> { - self.0.event_with_filter(::core::default::Default::default()) + self.0 + .event_with_filter(::core::default::Default::default()) } } - impl From<::ethers::contract::Contract> - for Summa { + impl From<::ethers::contract::Contract> for Summa { fn from(contract: ::ethers::contract::Contract) -> Self { Self::new(contract.address(), contract.client()) } @@ -13885,7 +18514,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent( name = "AddressOwnershipProofSubmitted", @@ -13902,17 +18531,18 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent( name = "LiabilitiesCommitmentSubmitted", - abi = "LiabilitiesCommitmentSubmitted(uint256,bytes,(string,string)[])" + abi = "LiabilitiesCommitmentSubmitted(uint256,uint256[],bytes,bytes)" )] pub struct LiabilitiesCommitmentSubmittedFilter { #[ethevent(indexed)] pub timestamp: ::ethers::core::types::U256, - pub proof: ::ethers::core::types::Bytes, - pub cryptocurrencies: ::std::vec::Vec, + pub total_balances: ::std::vec::Vec<::ethers::core::types::U256>, + pub snark_proof: ::ethers::core::types::Bytes, + pub grand_sum_proof: ::ethers::core::types::Bytes, } #[derive( Clone, @@ -13922,7 +18552,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent( name = "OwnershipTransferred", @@ -13966,9 +18596,7 @@ pub mod summa { Self::LiabilitiesCommitmentSubmittedFilter(element) => { ::core::fmt::Display::fmt(element, f) } - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::OwnershipTransferredFilter(element) => ::core::fmt::Display::fmt(element, f), } } } @@ -13996,9 +18624,12 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, + )] + #[ethcall( + name = "addressOwnershipProofs", + abi = "addressOwnershipProofs(uint256)" )] - #[ethcall(name = "addressOwnershipProofs", abi = "addressOwnershipProofs(uint256)")] pub struct AddressOwnershipProofsCall(pub ::ethers::core::types::U256); ///Container type for all input parameters for the `commitments` function with signature `commitments(uint256)` and selector `0x49ce8997` #[derive( @@ -14009,7 +18640,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "commitments", abi = "commitments(uint256)")] pub struct CommitmentsCall(pub ::ethers::core::types::U256); @@ -14022,7 +18653,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "config", abi = "config()")] pub struct ConfigCall; @@ -14035,7 +18666,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "getAddressOwnershipProof", @@ -14053,7 +18684,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "owner", abi = "owner()")] pub struct OwnerCall; @@ -14066,11 +18697,11 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] pub struct RenounceOwnershipCall; - ///Container type for all input parameters for the `submitCommitment` function with signature `submitCommitment(bytes,(string,string)[],uint256)` and selector `0x43f9ec07` + ///Container type for all input parameters for the `submitCommitment` function with signature `submitCommitment(bytes,bytes,uint256[],uint256)` and selector `0x05ab9860` #[derive( Clone, ::ethers::contract::EthCall, @@ -14079,15 +18710,16 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "submitCommitment", - abi = "submitCommitment(bytes,(string,string)[],uint256)" + abi = "submitCommitment(bytes,bytes,uint256[],uint256)" )] pub struct SubmitCommitmentCall { - pub proof: ::ethers::core::types::Bytes, - pub cryptocurrencies: ::std::vec::Vec, + pub snark_proof: ::ethers::core::types::Bytes, + pub grand_sum_proof: ::ethers::core::types::Bytes, + pub total_balances: ::std::vec::Vec<::ethers::core::types::U256>, pub timestamp: ::ethers::core::types::U256, } ///Container type for all input parameters for the `submitProofOfAddressOwnership` function with signature `submitProofOfAddressOwnership((string,string,bytes,bytes)[])` and selector `0xc7ddca0e` @@ -14099,7 +18731,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall( name = "submitProofOfAddressOwnership", @@ -14117,13 +18749,34 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] pub struct TransferOwnershipCall { pub new_owner: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `verificationKey` function with signature `verificationKey()` and selector `0x7ddc907d` + ///Container type for all input parameters for the `verifyInclusionProof` function with signature `verifyInclusionProof(uint256,bytes,uint256[],uint256[])` and selector `0x9c382559` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "verifyInclusionProof", + abi = "verifyInclusionProof(uint256,bytes,uint256[],uint256[])" + )] + pub struct VerifyInclusionProofCall { + pub timestamp: ::ethers::core::types::U256, + pub inclusion_proof: ::ethers::core::types::Bytes, + pub challenges: ::std::vec::Vec<::ethers::core::types::U256>, + pub values: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all input parameters for the `verifyingKey` function with signature `verifyingKey()` and selector `0x7950c5f8` #[derive( Clone, ::ethers::contract::EthCall, @@ -14132,10 +18785,10 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] - #[ethcall(name = "verificationKey", abi = "verificationKey()")] - pub struct VerificationKeyCall; + #[ethcall(name = "verifyingKey", abi = "verifyingKey()")] + pub struct VerifyingKeyCall; ///Container type for all of the contract's call #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum SummaCalls { @@ -14148,64 +18801,61 @@ pub mod summa { SubmitCommitment(SubmitCommitmentCall), SubmitProofOfAddressOwnership(SubmitProofOfAddressOwnershipCall), TransferOwnership(TransferOwnershipCall), - VerificationKey(VerificationKeyCall), + VerifyInclusionProof(VerifyInclusionProofCall), + VerifyingKey(VerifyingKeyCall), } impl ::ethers::core::abi::AbiDecode for SummaCalls { fn decode( data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::AddressOwnershipProofs(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Commitments(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Config(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::GetAddressOwnershipProof(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Owner(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::RenounceOwnership(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::SubmitCommitment(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::SubmitProofOfAddressOwnership(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::TransferOwnership(decoded)); } - if let Ok(decoded) - = ::decode(data) { - return Ok(Self::VerificationKey(decoded)); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::VerifyInclusionProof(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::VerifyingKey(decoded)); } Err(::ethers::core::abi::Error::InvalidData.into()) } @@ -14216,43 +18866,32 @@ pub mod summa { Self::AddressOwnershipProofs(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::Commitments(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::Commitments(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Config(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::GetAddressOwnershipProof(element) => { ::ethers::core::abi::AbiEncode::encode(element) } Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RenounceOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SubmitCommitment(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::RenounceOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SubmitCommitment(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::SubmitProofOfAddressOwnership(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::VerificationKey(element) => { + Self::TransferOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::VerifyInclusionProof(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::VerifyingKey(element) => ::ethers::core::abi::AbiEncode::encode(element), } } } impl ::core::fmt::Display for SummaCalls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { - Self::AddressOwnershipProofs(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::AddressOwnershipProofs(element) => ::core::fmt::Display::fmt(element, f), Self::Commitments(element) => ::core::fmt::Display::fmt(element, f), Self::Config(element) => ::core::fmt::Display::fmt(element, f), - Self::GetAddressOwnershipProof(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::GetAddressOwnershipProof(element) => ::core::fmt::Display::fmt(element, f), Self::Owner(element) => ::core::fmt::Display::fmt(element, f), Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f), Self::SubmitCommitment(element) => ::core::fmt::Display::fmt(element, f), @@ -14260,7 +18899,8 @@ pub mod summa { ::core::fmt::Display::fmt(element, f) } Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - Self::VerificationKey(element) => ::core::fmt::Display::fmt(element, f), + Self::VerifyInclusionProof(element) => ::core::fmt::Display::fmt(element, f), + Self::VerifyingKey(element) => ::core::fmt::Display::fmt(element, f), } } } @@ -14309,9 +18949,14 @@ pub mod summa { Self::TransferOwnership(value) } } - impl ::core::convert::From for SummaCalls { - fn from(value: VerificationKeyCall) -> Self { - Self::VerificationKey(value) + impl ::core::convert::From for SummaCalls { + fn from(value: VerifyInclusionProofCall) -> Self { + Self::VerifyInclusionProof(value) + } + } + impl ::core::convert::From for SummaCalls { + fn from(value: VerifyingKeyCall) -> Self { + Self::VerifyingKey(value) } } ///Container type for all return fields from the `addressOwnershipProofs` function with signature `addressOwnershipProofs(uint256)` and selector `0xa3c4bcf8` @@ -14323,7 +18968,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct AddressOwnershipProofsReturn { pub cex_address: ::std::string::String, @@ -14340,11 +18985,9 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] - pub struct CommitmentsReturn { - pub proof: ::ethers::core::types::Bytes, - } + pub struct CommitmentsReturn(pub ::ethers::core::types::Bytes); ///Container type for all return fields from the `config` function with signature `config()` and selector `0x79502c55` #[derive( Clone, @@ -14354,10 +18997,9 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct ConfigReturn { - pub currencies_count: u16, pub balance_byte_range: u8, } ///Container type for all return fields from the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968` @@ -14369,7 +19011,7 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct GetAddressOwnershipProofReturn(pub AddressOwnershipProof); ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` @@ -14381,10 +19023,10 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `verificationKey` function with signature `verificationKey()` and selector `0x7ddc907d` + ///Container type for all return fields from the `verifyInclusionProof` function with signature `verifyInclusionProof(uint256,bytes,uint256[],uint256[])` and selector `0x9c382559` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -14393,10 +19035,10 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] - pub struct VerificationKeyReturn(pub ::ethers::core::types::Address); - ///`AddressOwnershipProof(string,string,bytes,bytes)` + pub struct VerifyInclusionProofReturn(pub bool); + ///Container type for all return fields from the `verifyingKey` function with signature `verifyingKey()` and selector `0x7950c5f8` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -14405,15 +19047,10 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] - pub struct AddressOwnershipProof { - pub cex_address: ::std::string::String, - pub chain: ::std::string::String, - pub signature: ::ethers::core::types::Bytes, - pub message: ::ethers::core::types::Bytes, - } - ///`Cryptocurrency(string,string)` + pub struct VerifyingKeyReturn(pub ::ethers::core::types::Address); + ///`AddressOwnershipProof(string,string,bytes,bytes)` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -14422,10 +19059,12 @@ pub mod summa { Debug, PartialEq, Eq, - Hash + Hash, )] - pub struct Cryptocurrency { - pub name: ::std::string::String, + pub struct AddressOwnershipProof { + pub cex_address: ::std::string::String, pub chain: ::std::string::String, + pub signature: ::ethers::core::types::Bytes, + pub message: ::ethers::core::types::Bytes, } } diff --git a/backend/src/contracts/generated/verifying_key.rs b/backend/src/contracts/generated/verifying_key.rs new file mode 100644 index 00000000..28b64659 --- /dev/null +++ b/backend/src/contracts/generated/verifying_key.rs @@ -0,0 +1,1534 @@ +pub use halo_2_verifying_key::*; +/// This module was auto-generated with ethers-rs Abigen. +/// More information at: +#[allow( + clippy::enum_variant_names, + clippy::too_many_arguments, + clippy::upper_case_acronyms, + clippy::type_complexity, + dead_code, + non_camel_case_types +)] +pub mod halo_2_verifying_key { + #[rustfmt::skip] + const __ABI: &str = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]}]"; + ///The parsed JSON ABI of the contract. + pub static HALO2VERIFYINGKEY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); + #[rustfmt::skip] + const __BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 0, + 127, + 15, + 66, + 130, + 229, + 90, + 120, + 157, + 148, + 234, + 87, + 212, + 226, + 0, + 98, + 61, + 171, + 183, + 234, + 103, + 201, + 152, + 116, + 159, + 3, + 112, + 200, + 144, + 171, + 158, + 230, + 136, + 63, + 129, + 82, + 96, + 17, + 96, + 32, + 82, + 127, + 48, + 100, + 54, + 64, + 185, + 248, + 47, + 144, + 232, + 59, + 105, + 142, + 94, + 166, + 23, + 156, + 124, + 5, + 84, + 46, + 133, + 149, + 51, + 180, + 139, + 153, + 83, + 162, + 245, + 54, + 8, + 1, + 96, + 64, + 82, + 127, + 48, + 76, + 209, + 231, + 156, + 250, + 91, + 15, + 5, + 78, + 152, + 26, + 39, + 237, + 119, + 6, + 231, + 234, + 107, + 6, + 167, + 242, + 102, + 239, + 141, + 184, + 25, + 193, + 121, + 194, + 195, + 234, + 96, + 96, + 82, + 127, + 25, + 53, + 134, + 218, + 135, + 44, + 222, + 255, + 2, + 61, + 106, + 178, + 38, + 58, + 19, + 27, + 71, + 128, + 219, + 136, + 120, + 190, + 60, + 59, + 127, + 143, + 1, + 156, + 6, + 252, + 176, + 251, + 96, + 128, + 82, + 127, + 41, + 145, + 16, + 230, + 131, + 95, + 215, + 55, + 49, + 251, + 60, + 230, + 222, + 135, + 21, + 25, + 136, + 218, + 64, + 60, + 38, + 84, + 103, + 169, + 107, + 156, + 218, + 13, + 125, + 170, + 114, + 228, + 96, + 160, + 82, + 96, + 1, + 96, + 192, + 82, + 128, + 96, + 224, + 82, + 128, + 97, + 1, + 0, + 82, + 128, + 97, + 1, + 32, + 82, + 128, + 97, + 1, + 64, + 82, + 96, + 1, + 97, + 1, + 96, + 82, + 96, + 2, + 97, + 1, + 128, + 82, + 127, + 25, + 142, + 147, + 147, + 146, + 13, + 72, + 58, + 114, + 96, + 191, + 183, + 49, + 251, + 93, + 37, + 241, + 170, + 73, + 51, + 53, + 169, + 231, + 18, + 151, + 228, + 133, + 183, + 174, + 243, + 18, + 194, + 97, + 1, + 160, + 82, + 127, + 24, + 0, + 222, + 239, + 18, + 31, + 30, + 118, + 66, + 106, + 0, + 102, + 94, + 92, + 68, + 121, + 103, + 67, + 34, + 212, + 247, + 94, + 218, + 221, + 70, + 222, + 189, + 92, + 217, + 146, + 246, + 237, + 97, + 1, + 192, + 82, + 127, + 9, + 6, + 137, + 208, + 88, + 95, + 240, + 117, + 236, + 158, + 153, + 173, + 105, + 12, + 51, + 149, + 188, + 75, + 49, + 51, + 112, + 179, + 142, + 243, + 85, + 172, + 218, + 220, + 209, + 34, + 151, + 91, + 97, + 1, + 224, + 82, + 127, + 18, + 200, + 94, + 165, + 219, + 140, + 109, + 235, + 74, + 171, + 113, + 128, + 141, + 203, + 64, + 143, + 227, + 209, + 231, + 105, + 12, + 67, + 211, + 123, + 76, + 230, + 204, + 1, + 102, + 250, + 125, + 170, + 97, + 2, + 0, + 82, + 127, + 38, + 24, + 106, + 45, + 101, + 238, + 77, + 47, + 156, + 154, + 91, + 145, + 248, + 101, + 151, + 211, + 95, + 25, + 44, + 209, + 32, + 202, + 247, + 233, + 53, + 216, + 68, + 61, + 25, + 56, + 226, + 61, + 97, + 2, + 32, + 82, + 127, + 48, + 68, + 31, + 209, + 181, + 211, + 55, + 4, + 130, + 196, + 33, + 82, + 168, + 137, + 144, + 39, + 113, + 105, + 137, + 166, + 153, + 108, + 37, + 53, + 188, + 159, + 127, + 238, + 138, + 174, + 247, + 158, + 97, + 2, + 64, + 82, + 127, + 22, + 243, + 99, + 241, + 3, + 200, + 13, + 123, + 188, + 138, + 211, + 198, + 134, + 126, + 8, + 34, + 187, + 198, + 0, + 11, + 233, + 26, + 70, + 137, + 117, + 92, + 125, + 244, + 2, + 33, + 193, + 69, + 97, + 2, + 96, + 82, + 127, + 43, + 28, + 187, + 62, + 82, + 30, + 223, + 90, + 98, + 45, + 130, + 118, + 42, + 68, + 165, + 230, + 63, + 30, + 80, + 179, + 50, + 215, + 17, + 84, + 164, + 167, + 149, + 141, + 96, + 17, + 222, + 255, + 97, + 2, + 128, + 82, + 127, + 20, + 4, + 162, + 209, + 124, + 208, + 44, + 143, + 159, + 215, + 157, + 116, + 172, + 115, + 198, + 125, + 24, + 129, + 230, + 44, + 106, + 243, + 84, + 250, + 116, + 210, + 53, + 197, + 227, + 125, + 172, + 254, + 97, + 2, + 160, + 82, + 127, + 44, + 30, + 48, + 120, + 31, + 115, + 94, + 121, + 119, + 130, + 13, + 76, + 169, + 20, + 80, + 16, + 226, + 141, + 204, + 128, + 142, + 224, + 241, + 233, + 118, + 71, + 114, + 137, + 5, + 123, + 122, + 236, + 97, + 2, + 192, + 82, + 127, + 27, + 32, + 49, + 64, + 98, + 86, + 13, + 236, + 161, + 177, + 186, + 218, + 38, + 45, + 190, + 51, + 82, + 165, + 33, + 234, + 46, + 248, + 151, + 52, + 118, + 203, + 122, + 214, + 245, + 136, + 197, + 157, + 97, + 2, + 224, + 82, + 127, + 36, + 74, + 201, + 240, + 132, + 139, + 232, + 77, + 90, + 133, + 227, + 196, + 230, + 46, + 42, + 55, + 26, + 199, + 190, + 39, + 214, + 130, + 2, + 239, + 63, + 231, + 149, + 65, + 2, + 26, + 185, + 157, + 97, + 3, + 0, + 82, + 127, + 43, + 31, + 126, + 33, + 72, + 191, + 171, + 96, + 30, + 104, + 242, + 232, + 19, + 59, + 157, + 5, + 193, + 10, + 149, + 38, + 214, + 134, + 179, + 86, + 183, + 97, + 234, + 163, + 113, + 58, + 112, + 186, + 97, + 3, + 32, + 82, + 127, + 1, + 51, + 69, + 234, + 9, + 150, + 107, + 6, + 228, + 174, + 125, + 126, + 41, + 25, + 221, + 187, + 110, + 63, + 126, + 100, + 90, + 234, + 81, + 83, + 117, + 237, + 114, + 155, + 255, + 100, + 77, + 197, + 97, + 3, + 64, + 82, + 127, + 39, + 167, + 166, + 96, + 135, + 168, + 193, + 123, + 0, + 255, + 183, + 254, + 155, + 118, + 186, + 33, + 153, + 202, + 48, + 139, + 203, + 10, + 209, + 0, + 250, + 24, + 24, + 134, + 214, + 201, + 185, + 54, + 97, + 3, + 96, + 82, + 127, + 35, + 188, + 149, + 26, + 60, + 67, + 7, + 56, + 75, + 222, + 197, + 214, + 27, + 225, + 34, + 161, + 156, + 147, + 61, + 179, + 38, + 109, + 99, + 39, + 164, + 114, + 229, + 32, + 58, + 159, + 120, + 90, + 97, + 3, + 128, + 82, + 127, + 7, + 67, + 234, + 64, + 241, + 64, + 132, + 219, + 38, + 115, + 33, + 114, + 131, + 170, + 5, + 63, + 152, + 104, + 150, + 238, + 124, + 24, + 31, + 82, + 17, + 132, + 66, + 233, + 156, + 69, + 41, + 116, + 97, + 3, + 160, + 82, + 127, + 2, + 3, + 227, + 73, + 58, + 37, + 148, + 236, + 229, + 125, + 34, + 204, + 117, + 221, + 8, + 26, + 198, + 130, + 113, + 236, + 124, + 117, + 129, + 83, + 207, + 210, + 21, + 43, + 251, + 92, + 25, + 227, + 97, + 3, + 192, + 82, + 127, + 29, + 129, + 224, + 176, + 109, + 234, + 17, + 217, + 183, + 167, + 166, + 68, + 88, + 219, + 94, + 94, + 178, + 245, + 219, + 225, + 7, + 168, + 31, + 5, + 85, + 115, + 143, + 97, + 59, + 155, + 125, + 120, + 97, + 3, + 224, + 82, + 127, + 8, + 30, + 62, + 89, + 222, + 70, + 21, + 176, + 95, + 239, + 72, + 245, + 145, + 209, + 234, + 35, + 203, + 50, + 240, + 238, + 132, + 17, + 87, + 9, + 76, + 27, + 129, + 185, + 92, + 253, + 185, + 250, + 97, + 4, + 0, + 82, + 127, + 12, + 40, + 224, + 219, + 46, + 77, + 236, + 194, + 163, + 100, + 19, + 98, + 12, + 220, + 54, + 174, + 35, + 124, + 203, + 193, + 205, + 17, + 104, + 132, + 28, + 83, + 117, + 210, + 167, + 148, + 120, + 206, + 97, + 4, + 32, + 82, + 127, + 23, + 181, + 121, + 10, + 17, + 252, + 222, + 0, + 248, + 172, + 247, + 237, + 196, + 50, + 143, + 55, + 136, + 58, + 236, + 15, + 89, + 85, + 248, + 166, + 247, + 118, + 64, + 120, + 237, + 243, + 205, + 5, + 97, + 4, + 64, + 82, + 127, + 40, + 74, + 192, + 83, + 217, + 106, + 51, + 252, + 166, + 158, + 202, + 0, + 225, + 110, + 234, + 117, + 173, + 27, + 240, + 8, + 210, + 167, + 66, + 252, + 132, + 106, + 199, + 61, + 23, + 212, + 109, + 115, + 97, + 4, + 96, + 82, + 127, + 20, + 244, + 86, + 102, + 162, + 107, + 141, + 71, + 33, + 134, + 219, + 247, + 142, + 96, + 106, + 130, + 137, + 30, + 15, + 18, + 42, + 84, + 38, + 68, + 24, + 207, + 226, + 97, + 80, + 3, + 223, + 185, + 97, + 4, + 128, + 82, + 127, + 28, + 81, + 124, + 51, + 90, + 214, + 52, + 66, + 46, + 242, + 235, + 95, + 97, + 89, + 38, + 232, + 117, + 175, + 169, + 233, + 197, + 137, + 171, + 245, + 40, + 211, + 21, + 168, + 165, + 134, + 178, + 45, + 97, + 4, + 160, + 82, + 127, + 18, + 32, + 177, + 177, + 60, + 145, + 232, + 17, + 81, + 6, + 20, + 75, + 196, + 23, + 212, + 211, + 230, + 169, + 222, + 63, + 183, + 4, + 6, + 230, + 139, + 74, + 95, + 216, + 169, + 47, + 67, + 39, + 97, + 4, + 192, + 82, + 127, + 27, + 224, + 151, + 42, + 254, + 205, + 208, + 19, + 255, + 166, + 163, + 172, + 193, + 137, + 152, + 97, + 155, + 141, + 247, + 131, + 66, + 115, + 216, + 152, + 37, + 191, + 26, + 189, + 31, + 32, + 35, + 171, + 97, + 4, + 224, + 82, + 126, + 25, + 234, + 7, + 45, + 109, + 73, + 251, + 241, + 100, + 146, + 154, + 25, + 167, + 109, + 68, + 33, + 243, + 61, + 71, + 100, + 127, + 246, + 44, + 114, + 48, + 19, + 63, + 186, + 145, + 83, + 7, + 97, + 5, + 0, + 82, + 127, + 15, + 9, + 197, + 133, + 220, + 55, + 109, + 208, + 213, + 150, + 44, + 118, + 174, + 68, + 77, + 193, + 204, + 61, + 233, + 120, + 15, + 79, + 189, + 213, + 16, + 90, + 112, + 64, + 80, + 13, + 96, + 186, + 97, + 5, + 32, + 82, + 127, + 19, + 88, + 122, + 30, + 71, + 153, + 186, + 114, + 241, + 217, + 94, + 71, + 164, + 227, + 119, + 8, + 107, + 131, + 229, + 24, + 153, + 3, + 86, + 110, + 116, + 34, + 17, + 158, + 210, + 142, + 186, + 89, + 97, + 5, + 64, + 82, + 97, + 5, + 96, + 129, + 243, + 254, + ]; + ///The bytecode of the contract. + pub static HALO2VERIFYINGKEY_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 96, + 0, + 128, + 253, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 231, + 87, + 95, + 79, + 230, + 87, + 140, + 19, + 208, + 56, + 60, + 108, + 91, + 57, + 254, + 88, + 13, + 18, + 238, + 195, + 3, + 81, + 202, + 5, + 32, + 79, + 37, + 109, + 132, + 0, + 215, + 245, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The deployed bytecode of the contract. + pub static HALO2VERIFYINGKEY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Halo2VerifyingKey(::ethers::contract::Contract); + impl ::core::clone::Clone for Halo2VerifyingKey { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Halo2VerifyingKey { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Halo2VerifyingKey { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Halo2VerifyingKey { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(stringify!(Halo2VerifyingKey)) + .field(&self.address()) + .finish() + } + } + impl Halo2VerifyingKey { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self(::ethers::contract::Contract::new( + address.into(), + HALO2VERIFYINGKEY_ABI.clone(), + client, + )) + } + /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. + /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction + /// + /// Notes: + /// - If there are no constructor arguments, you should pass `()` as the argument. + /// - The default poll duration is 7 seconds. + /// - The default number of confirmations is 1 block. + /// + /// + /// # Example + /// + /// Generate contract bindings with `abigen!` and deploy a new contract instance. + /// + /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. + /// + /// ```ignore + /// # async fn deploy(client: ::std::sync::Arc) { + /// abigen!(Greeter, "../greeter.json"); + /// + /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); + /// let msg = greeter_contract.greet().call().await.unwrap(); + /// # } + /// ``` + pub fn deploy( + client: ::std::sync::Arc, + constructor_args: T, + ) -> ::core::result::Result< + ::ethers::contract::builders::ContractDeployer, + ::ethers::contract::ContractError, + > { + let factory = ::ethers::contract::ContractFactory::new( + HALO2VERIFYINGKEY_ABI.clone(), + HALO2VERIFYINGKEY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + } + impl From<::ethers::contract::Contract> + for Halo2VerifyingKey + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/backend/src/contracts/mock/mock_erc20.rs b/backend/src/contracts/mock/mock_erc20.rs index 78c06fde..84a69eca 100644 --- a/backend/src/contracts/mock/mock_erc20.rs +++ b/backend/src/contracts/mock/mock_erc20.rs @@ -7,14 +7,16 @@ pub use mock_erc20::*; clippy::upper_case_acronyms, clippy::type_complexity, dead_code, - non_camel_case_types, + non_camel_case_types )] pub mod mock_erc20 { #[rustfmt::skip] const __ABI: &str = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\",\"outputs\":[]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]}]"; ///The parsed JSON ABI of the contract. - pub static MOCKERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(|| - ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid")); + pub static MOCKERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(|| { + ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid") + }); #[rustfmt::skip] const __BYTECODE: &[u8] = &[ 96, @@ -3444,9 +3446,8 @@ pub mod mock_erc20 { 51, ]; ///The bytecode of the contract. - pub static MOCKERC20_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); + pub static MOCKERC20_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] const __DEPLOYED_BYTECODE: &[u8] = &[ 96, @@ -6258,9 +6259,8 @@ pub mod mock_erc20 { 51, ]; ///The deployed bytecode of the contract. - pub static MOCKERC20_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); + pub static MOCKERC20_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); pub struct MockERC20(::ethers::contract::Contract); impl ::core::clone::Clone for MockERC20 { fn clone(&self) -> Self { @@ -6280,7 +6280,9 @@ pub mod mock_erc20 { } impl ::core::fmt::Debug for MockERC20 { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(stringify!(MockERC20)).field(&self.address()).finish() + f.debug_tuple(stringify!(MockERC20)) + .field(&self.address()) + .finish() } } impl MockERC20 { @@ -6290,13 +6292,11 @@ pub mod mock_erc20 { address: T, client: ::std::sync::Arc, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKERC20_ABI.clone(), - client, - ), - ) + Self(::ethers::contract::Contract::new( + address.into(), + MOCKERC20_ABI.clone(), + client, + )) } /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction @@ -6403,9 +6403,7 @@ pub mod mock_erc20 { .expect("method not found (this should never happen)") } ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn name(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([6, 253, 222, 3], ()) .expect("method not found (this should never happen)") @@ -6413,18 +6411,13 @@ pub mod mock_erc20 { ///Calls the contract's `owner` (0x8da5cb5b) function pub fn owner( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { + ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } ///Calls the contract's `renounceOwnership` (0x715018a6) function - pub fn renounce_ownership( - &self, - ) -> ::ethers::contract::builders::ContractCall { + pub fn renounce_ownership(&self) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([113, 80, 24, 166], ()) .expect("method not found (this should never happen)") @@ -6478,46 +6471,31 @@ pub mod mock_erc20 { ///Gets the contract's `Approval` event pub fn approval_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalFilter> { self.0.event() } ///Gets the contract's `OwnershipTransferred` event pub fn ownership_transferred_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, OwnershipTransferredFilter> + { self.0.event() } ///Gets the contract's `Transfer` event pub fn transfer_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, TransferFilter> { self.0.event() } /// Returns an `Event` builder for all the events of this contract. pub fn events( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - MockERC20Events, - > { - self.0.event_with_filter(::core::default::Default::default()) + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, MockERC20Events> { + self.0 + .event_with_filter(::core::default::Default::default()) } } - impl From<::ethers::contract::Contract> - for MockERC20 { + impl From<::ethers::contract::Contract> for MockERC20 { fn from(contract: ::ethers::contract::Contract) -> Self { Self::new(contract.address(), contract.client()) } @@ -6530,7 +6508,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] pub struct ApprovalFilter { @@ -6548,7 +6526,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent( name = "OwnershipTransferred", @@ -6568,7 +6546,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] pub struct TransferFilter { @@ -6605,9 +6583,7 @@ pub mod mock_erc20 { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } + Self::OwnershipTransferredFilter(element) => ::core::fmt::Display::fmt(element, f), Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), } } @@ -6636,7 +6612,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "allowance", abi = "allowance(address,address)")] pub struct AllowanceCall { @@ -6652,7 +6628,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "approve", abi = "approve(address,uint256)")] pub struct ApproveCall { @@ -6668,7 +6644,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] pub struct BalanceOfCall { @@ -6683,7 +6659,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "decimals", abi = "decimals()")] pub struct DecimalsCall; @@ -6696,7 +6672,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "decreaseAllowance", abi = "decreaseAllowance(address,uint256)")] pub struct DecreaseAllowanceCall { @@ -6712,7 +6688,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "increaseAllowance", abi = "increaseAllowance(address,uint256)")] pub struct IncreaseAllowanceCall { @@ -6728,7 +6704,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "mint", abi = "mint(address,uint256)")] pub struct MintCall { @@ -6744,7 +6720,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "name", abi = "name()")] pub struct NameCall; @@ -6757,7 +6733,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "owner", abi = "owner()")] pub struct OwnerCall; @@ -6770,7 +6746,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] pub struct RenounceOwnershipCall; @@ -6783,7 +6759,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "symbol", abi = "symbol()")] pub struct SymbolCall; @@ -6796,7 +6772,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "totalSupply", abi = "totalSupply()")] pub struct TotalSupplyCall; @@ -6809,7 +6785,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] pub struct TransferCall { @@ -6825,7 +6801,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] pub struct TransferFromCall { @@ -6842,7 +6818,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] pub struct TransferOwnershipCall { @@ -6872,72 +6848,58 @@ pub mod mock_erc20 { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Allowance(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Approve(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::BalanceOf(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Decimals(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::DecreaseAllowance(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::IncreaseAllowance(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Mint(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Name(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Owner(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::RenounceOwnership(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Symbol(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::TotalSupply(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) { return Ok(Self::Transfer(decoded)); } - if let Ok(decoded) - = ::decode(data) { + if let Ok(decoded) = ::decode(data) + { return Ok(Self::TransferFrom(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { + if let Ok(decoded) = + ::decode(data) + { return Ok(Self::TransferOwnership(decoded)); } Err(::ethers::core::abi::Error::InvalidData.into()) @@ -6946,41 +6908,21 @@ pub mod mock_erc20 { impl ::ethers::core::abi::AbiEncode for MockERC20Calls { fn encode(self) -> Vec { match self { - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DecreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncreaseAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DecreaseAllowance(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IncreaseAllowance(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Mint(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RenounceOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::RenounceOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } + Self::TotalSupply(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Transfer(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferOwnership(element) => ::ethers::core::abi::AbiEncode::encode(element), } } } @@ -7089,7 +7031,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct AllowanceReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` @@ -7101,7 +7043,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct ApproveReturn(pub bool); ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` @@ -7113,7 +7055,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct BalanceOfReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` @@ -7125,7 +7067,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct DecimalsReturn(pub u8); ///Container type for all return fields from the `decreaseAllowance` function with signature `decreaseAllowance(address,uint256)` and selector `0xa457c2d7` @@ -7137,7 +7079,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct DecreaseAllowanceReturn(pub bool); ///Container type for all return fields from the `increaseAllowance` function with signature `increaseAllowance(address,uint256)` and selector `0x39509351` @@ -7149,7 +7091,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct IncreaseAllowanceReturn(pub bool); ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` @@ -7161,7 +7103,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct NameReturn(pub ::std::string::String); ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` @@ -7173,7 +7115,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct OwnerReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` @@ -7185,7 +7127,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct SymbolReturn(pub ::std::string::String); ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` @@ -7197,7 +7139,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` @@ -7209,7 +7151,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct TransferReturn(pub bool); ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` @@ -7221,7 +7163,7 @@ pub mod mock_erc20 { Debug, PartialEq, Eq, - Hash + Hash, )] pub struct TransferFromReturn(pub bool); } diff --git a/backend/src/contracts/signer.rs b/backend/src/contracts/signer.rs index fe196514..dfa065e6 100644 --- a/backend/src/contracts/signer.rs +++ b/backend/src/contracts/signer.rs @@ -2,13 +2,13 @@ use ethers::{ prelude::SignerMiddleware, providers::{Http, Middleware, Provider}, signers::{LocalWallet, Signer}, - types::{Address, U256}, + types::{Address, Bytes, U256}, }; use serde_json::Value; use std::{error::Error, fs::File, io::BufReader, path::Path, str::FromStr, sync::Arc}; use tokio::sync::Mutex; -use super::generated::summa_contract::{AddressOwnershipProof, Cryptocurrency}; +use super::generated::summa_contract::AddressOwnershipProof; use crate::contracts::generated::summa_contract::Summa; pub enum AddressInput { @@ -106,26 +106,25 @@ impl SummaSigner { pub async fn submit_commitment( &self, - commitments: Vec, - grand_sums: Vec, - cryptocurrencies: Vec, + snark_proof: Bytes, + grand_sum_proof: Bytes, + total_balances: Vec, timestamp: U256, ) -> Result<(), Box> { let lock_guard = self.nonce_lock.lock().await; - // TODO: fix this after Summa contract is concrete - // let submit_liability_commitment = &self.summa_contract.submit_commitment( - // mst_root, - // root_sums, - // cryptocurrencies, - // timestamp, - // ); + let submit_liability_commitment = &self.summa_contract.submit_commitment( + snark_proof, + grand_sum_proof, + total_balances, + timestamp, + ); - // // To prevent nonce collision, we lock the nonce before sending the transaction - // let tx = submit_liability_commitment.send().await?; + // To prevent nonce collision, we lock the nonce before sending the transaction + let tx = submit_liability_commitment.send().await?; - // // Wait for the pending transaction to be mined - // tx.await?; + // Wait for the pending transaction to be mined + tx.await?; drop(lock_guard); diff --git a/backend/src/tests.rs b/backend/src/tests.rs index 268e69e0..48314405 100644 --- a/backend/src/tests.rs +++ b/backend/src/tests.rs @@ -10,9 +10,13 @@ use ethers::{ }; use tokio::time; -use crate::contracts::generated::{inclusion_verifier::InclusionVerifier, summa_contract::Summa}; +use crate::contracts::generated::{ + grandsum_verifier::GrandSumVerifier, inclusion_verifier::InclusionVerifier, + snark_verifier::Verifier as SnarkVerifier, summa_contract::Summa, + verifying_key::Halo2VerifyingKey as VerifyingKey, +}; -// Setup test environment on the anvil instance +// Setup test environment on the Anvil instance. pub async fn initialize_test_env( block_time: Option, ) -> ( @@ -22,7 +26,7 @@ pub async fn initialize_test_env( Arc, LocalWallet>>, Summa, LocalWallet>>, ) { - // Initiate anvil by following assign block time or instant mining + // Initiate Anvil by assigning a block time or enabling instant mining. let anvil = match block_time { Some(interval) => Anvil::new() .mnemonic("test test test test test test test test test test test junk") @@ -33,23 +37,23 @@ pub async fn initialize_test_env( .spawn(), }; - // Extracting two exchange addresses from the Anvil instance + // Extracting two exchange addresses from the Anvil instance. let cex_addr_1 = anvil.addresses()[1]; let cex_addr_2 = anvil.addresses()[2]; - // Setup wallet from the first key in the Anvil and an HTTP provider with a 10ms interval from the Anvil endpoint + // Setup wallet using the first key in the Anvil and an HTTP provider with a 10 ms interval from the Anvil endpoint. let wallet: LocalWallet = anvil.keys()[0].clone().into(); let provider = Provider::::try_from(anvil.endpoint()) .unwrap() .interval(Duration::from_millis(10u64)); - // Creating a client by wrapping the provider with a signing middleware and the Anvil chainid + // Create a client by wrapping the provider with a signing middleware and the Anvil chain ID. let client = Arc::new(SignerMiddleware::new( provider, wallet.with_chain_id(anvil.chain_id()), )); - // Send RPC requests with `anvil_setBalance` method via provider to set ETH balance of `cex_addr_1` and `cex_addr_2` + // Send RPC requests using the `anvil_setBalance`` method via the provider to set the ETH balance for `cex_addr_1`` and `cex_addr_2`. for addr in [cex_addr_1, cex_addr_2].iter().copied() { let _res = client .provider() @@ -57,32 +61,50 @@ pub async fn initialize_test_env( .await; } + // Deploy a Verifying Key and Verifier contracts. if block_time.is_some() { time::sleep(Duration::from_secs(block_time.unwrap())).await; }; - let inclusion_verifier_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) + let verifying_key_contract = VerifyingKey::deploy(Arc::clone(&client), ()) .unwrap() .send() .await .unwrap(); - if block_time.is_some() { - time::sleep(Duration::from_secs(block_time.unwrap())).await; - }; + let snark_verifier_contract = SnarkVerifier::deploy(Arc::clone(&client), ()) + .unwrap() + .send() + .await + .unwrap(); + + let grand_sum_verifier = GrandSumVerifier::deploy(Arc::clone(&client), ()) + .unwrap() + .send() + .await + .unwrap(); + + let inclusion_verifier_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) + .unwrap() + .send() + .await + .unwrap(); - //The number of cryptocurrencies supported by the Merkle sum tree - let currencies_count = 2; - // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree - let balance_byte_range = 14; + // The number of bytes used to represent the balance of a cryptocurrency in polynomials. + let balance_byte_range = 8; let args: &[Token] = &[ + Token::Address(verifying_key_contract.address()), + Token::Address(snark_verifier_contract.address()), + Token::Address(grand_sum_verifier.address()), Token::Address(inclusion_verifier_contract.address()), - Token::Address(inclusion_verifier_contract.address()), - Token::Uint(currencies_count.into()), + // TOCO: check cryptocurrency names + Token::Array([Token::String("ETH".into()), Token::String("USDT".into())].to_vec()), + Token::Array([Token::String("ETH".into()), Token::String("ETH".into())].to_vec()), Token::Uint(balance_byte_range.into()), ]; - // Deploy Summa contract + + // Deploy Summa contract. let summa_contract = Summa::deploy(Arc::clone(&client), args) .unwrap() .send() @@ -99,7 +121,7 @@ mod test { use ethers::{ abi::AbiEncode, providers::{Http, Middleware, Provider}, - types::U64, + types::{U256, U64}, utils::to_checksum, }; use halo2_proofs::halo2curves::bn256::Fr as Fp; @@ -119,7 +141,7 @@ mod test { use summa_solvency::{ circuits::{ univariate_grand_sum::{UnivariateGrandSum, UnivariateGrandSumConfig}, - utils::{full_prover, generate_setup_artifacts}, + utils::{full_prover, full_verifier, generate_setup_artifacts}, }, cryptocurrency::Cryptocurrency, entry::Entry, @@ -130,20 +152,20 @@ mod test { const N_CURRENCIES: usize = 2; const N_POINTS: usize = 3; const N_USERS: usize = 16; + const PARAMS_PATH: &str = "../backend/ptau/hermez-raw-17"; #[tokio::test] async fn test_deployed_address() -> Result<(), Box> { let (anvil, _, _, _, summa_contract) = initialize_test_env(None).await; // Hardhat development environment, usually updates the address of a deployed contract in the `artifacts` directory. - // However, in our custom deployment script, `contracts/scripts/deploy.ts`, - // the address gets updated in `backend/src/contracts/deployments.json`. + // However, in our custom deployment script, `contracts/scripts/deploy.ts`, the address is updated in `backend/src/contracts/deployments.json`. let contract_address = summa_contract.address(); let signer = SummaSigner::new( "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", anvil.endpoint().as_str(), - AddressInput::Path("./src/contracts/deployments.json".into()), // the file contains the address of the deployed contract + AddressInput::Path("./src/contracts/deployments.json".into()), // This file contains the address of the deployed contract. ) .await?; @@ -156,9 +178,8 @@ mod test { async fn test_concurrent_sumbit_commitments() -> Result<(), Box> { let (anvil, _, _, _, summa_contract) = initialize_test_env(Some(1)).await; - // This test ensures that two proofs, when dispatched concurrently, do not result in nonce collisions. - // It checks that both proofs are processed and mined within a reasonable timeframe, - // indicating that there's no interference or delay when the two are submitted simultaneously. + // This test ensures that dispatching two commitments concurrently does not result in nonce collisions. + // It checks that both commitments are processed and mined, indicating there is no interference when they are submitted simultaneously. let signer = SummaSigner::new( "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", anvil.endpoint().as_str(), @@ -166,7 +187,6 @@ mod test { ) .await?; - let params_path = "ptau/hermez-raw-17"; let entry_csv = "../csv/entry_16.csv"; let mut entries: Vec> = vec![Entry::init_empty(); N_USERS]; let mut cryptos = vec![Cryptocurrency::init_empty(); N_CURRENCIES]; @@ -179,7 +199,7 @@ mod test { >::init(entries.to_vec()); let (params, pk, vk) = - generate_setup_artifacts(K, None, &univariate_grand_sum_circuit).unwrap(); + generate_setup_artifacts(K, Some(PARAMS_PATH), &univariate_grand_sum_circuit).unwrap(); // Create a proof let instances = vec![Fp::one(); 1]; // This instance is necessary to verify proof on solidity verifier. @@ -190,22 +210,34 @@ mod test { &[instances.clone()], ); - let mut round_one = - Round::<2, 3, 16>::new(&signer, advice_polys.clone(), params.clone(), vk.clone(), 1) - .unwrap(); - let mut round_two = Round::<2, 3, 16>::new(&signer, advice_polys, params, vk, 2).unwrap(); + let mut round_one = Round::::new( + &signer, + zk_snark_proof.clone(), + advice_polys.clone(), + params.clone(), + vk.clone(), + 1, + ); + let mut round_two = Round::::new( + &signer, + zk_snark_proof, + advice_polys, + params, + vk, + 2, + ); - // Checking block number before sending transaction of liability commitment + // Check the block number before sending the transaction for liability commitment. let outer_provider: Provider = Provider::try_from(anvil.endpoint().as_str())?; let start_block_number = outer_provider.get_block_number().await?; - // Send two commitments simultaneously + // Send two commitments simultaneously. let (round_one_result, round_two_result) = join!( round_one.dispatch_commitment(), round_two.dispatch_commitment() ); - // Check two blocks has been mined + // Check that two blocks have been mined. for _ in 0..5 { sleep(Duration::from_millis(500)).await; let updated_block_number = outer_provider.get_block_number().await?; @@ -214,7 +246,7 @@ mod test { } } - // Check two rounds' result are both Ok + // Check that the results of both commitments are correctly submitted. assert!(round_one_result.is_ok()); assert!(round_two_result.is_ok()); @@ -235,6 +267,7 @@ mod test { let mut address_ownership_client = AddressOwnership::new(&signer, "../csv/signatures.csv").unwrap(); + // Dispatch proof of address ownership. address_ownership_client .dispatch_proof_of_address_ownership() .await?; @@ -265,8 +298,7 @@ mod test { } ); - // Initialize round - let params_path = "ptau/hermez-raw-17"; + // Initialize Round. let entry_csv = "../csv/entry_16.csv"; let mut entries: Vec> = vec![Entry::init_empty(); N_USERS]; let mut cryptos = vec![Cryptocurrency::init_empty(); N_CURRENCIES]; @@ -279,9 +311,9 @@ mod test { >::init(entries.to_vec()); let (params, pk, vk) = - generate_setup_artifacts(K, None, &univariate_grand_sum_circuit).unwrap(); + generate_setup_artifacts(K, Some(PARAMS_PATH), &univariate_grand_sum_circuit).unwrap(); - // Create a proof + // Create a snark proof let instances = vec![Fp::one(); 1]; // This instance is necessary to verify proof on solidity verifier. let (zk_snark_proof, advice_polys, _omega) = full_prover( ¶ms, @@ -290,68 +322,70 @@ mod test { &[instances.clone()], ); - let mut round = - Round::::new(&signer, advice_polys, params, vk, 1) - .unwrap(); - - // TODO: fix checking inclusion proof after Summa contract is concrete - // let mut liability_commitment_logs = summa_contract - // .liabilities_commitment_submitted_filter() - // .query() - // .await?; - - // assert_eq!(liability_commitment_logs.len(), 0); - - // // Send liability commitment transaction - // round.dispatch_commitment().await?; - - // // After sending transaction of liability commitment, logs should be updated - // liability_commitment_logs = summa_contract - // .liabilities_commitment_submitted_filter() - // .query() - // .await?; - - // assert_eq!(liability_commitment_logs.len(), 1); - // assert_eq!( - // liability_commitment_logs[0], - // LiabilitiesCommitmentSubmittedFilter { - // timestamp: U256::from(1), - // mst_root: "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1" - // .parse() - // .unwrap(), - // root_balances: vec![U256::from(556862), U256::from(556862)], - // cryptocurrencies: vec![ - // Cryptocurrency { - // name: "ETH".to_string(), - // chain: "ETH".to_string(), - // }, - // Cryptocurrency { - // name: "USDT".to_string(), - // chain: "ETH".to_string(), - // }, - // ], - // } - // ); - - // Test inclusion proof + // Verify the SNARK proof to ensure its validity. + assert!(full_verifier( + ¶ms, + pk.get_vk(), + &zk_snark_proof, + &[instances] + )); + + let snapshot_time = 1u64; + let mut round = Round::::new( + &signer, + zk_snark_proof, + advice_polys, + params, + vk, + snapshot_time, + ); + + let mut liability_commitment_logs = summa_contract + .liabilities_commitment_submitted_filter() + .query() + .await?; + assert_eq!(liability_commitment_logs.len(), 0); + + // Dispatch the liability commitment transaction to Summa contract. + round.dispatch_commitment().await?; + + // Check for updated logs to confirm the liability commitment transaction. + liability_commitment_logs = summa_contract + .liabilities_commitment_submitted_filter() + .query() + .await?; + + assert_eq!(liability_commitment_logs.len(), 1); + assert_eq!(liability_commitment_logs[0].timestamp, U256::from(1)); + assert_eq!( + liability_commitment_logs[0].total_balances, + vec![U256::from(556862), U256::from(556862)] + ); + assert_eq!(liability_commitment_logs[0].grand_sum_proof.len(), 128); + assert_eq!(liability_commitment_logs[0].snark_proof.len(), 192); + + // Generate and verify an inclusion proof for a random user. let user_range: std::ops::Range = 0..N_USERS; let random_user_index = OsRng.gen_range(user_range) as usize; let inclusion_proof = round.get_proof_of_inclusion(random_user_index).unwrap(); - // check inclusion proof is not non + // Check inclusion proof is not none assert!(inclusion_proof.get_proof().len() > 0); - // TODO: fix this after Summa contract is concrete - // // Verify inclusion proof with onchain function - // let verified = summa_contract - // .verify_inclusion_proof( - // inclusion_proof.get_proof().clone(), - // inclusion_proof.get_public_inputs().clone(), - // U256::from(1), - // ) - // .await?; - - // assert!(verified); + // Verify the inclusion proof with onchain function + let verified = summa_contract + .verify_inclusion_proof( + U256::from(snapshot_time), + inclusion_proof.get_proof().clone(), + inclusion_proof + .get_challenge() + .clone() + .expect("no challenge"), + inclusion_proof.get_input_values().clone(), + ) + .await?; + + assert!(verified); drop(anvil); Ok(()) diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts index 37eec4f6..a5d92dff 100644 --- a/contracts/scripts/deploy.ts +++ b/contracts/scripts/deploy.ts @@ -20,6 +20,16 @@ async function main() { ); await snarkVerifier.deployed(); + const grandSumVerifier = await ethers.deployContract( + "src/GrandSumVerifier.sol:GrandSumVerifier" + ); + await grandSumVerifier.deployed(); + + const inclusionVerifier = await ethers.deployContract( + "src/InclusionVerifier.sol:InclusionVerifier" + ); + await inclusionVerifier.deployed(); + // The number of cryptocurrencies in the balance polynomials const currenciesCount = 2; // The number of bytes used to represent the balance of a cryptocurrency in the polynomials @@ -27,7 +37,10 @@ async function main() { const summa = await ethers.deployContract("Summa", [ verifyingKey.address, snarkVerifier.address, - currenciesCount, + grandSumVerifier.address, + inclusionVerifier.address, + ["ETH", "USDT"], // cryptocurrency names + ["ETH", "ETH"], // cryptocurrency chain balanceByteRange, ]); @@ -69,6 +82,8 @@ async function main() { copyAbi(fs, "Summa", "Summa"); copyAbi(fs, "VerifyingKey", "Halo2VerifyingKey"); copyAbi(fs, "SnarkVerifier", "Verifier"); + copyAbi(fs, "GrandSumVerifier", "GrandSumVerifier"); + copyAbi(fs, "InclusionVerifier", "InclusionVerifier"); } // We recommend this pattern to be able to use async/await everywhere